我正在寻找可以支持Windows身份验证和customgrant的IdentityServer3版本。 我在github中找到了Windows身份验证版本:“Windows Auth All-in-One”。 Windows令牌转换工作正常。 但是当我尝试使用自定义授权流程时,使用以下代码:
var client = new TokenClient(
Constants.TokenEndpoint,
"customclient",
"secret");
return client.RequestCustomGrantAsync("custom", "read write", ParameterData).Result;
我收到的回复是:
“error”:“unsupported_grant_type”
知道如何在Windows Auth All-in-One版本的Identity Server中启用自定义授权类型吗?
答案 0 :(得分:1)
使用IdentityServer的可扩展性机制,您可以为my_custom_credential
注册自定义授权验证程序。
自定义授权验证程序的工作是验证传入数据,并将其映射到IdentityServer用户。
首先实现此界面:
public interface ICustomGrantValidator
{
Task<CustomGrantValidationResult> ValidateAsync(ValidatedTokenRequest request);
string GrantType { get; }
}
在GrantType
属性中,您可以指定要使用此验证程序处理的自定义授权类型。
在ValidateAsync方法中,您可以访问原始请求(例如,用于读取示例中的自定义参数)
以上)以及范围和客户身份等经过验证的数据。
结果对象允许您设置映射到用户的主体(带有声明)或错误消息。
您可以通过在服务工厂设置验证器来注册验证器:
factory.CustomGrantValidators.Add(
new Registration<ICustomGrantValidator, MyCustomGrantValidator>());
要使用此授权类型,您需要使用以下配置创建客户端:
Flow
必须设为Custom
AllowedCustomGrantTypes
必须包含自定义授权类型https://identityserver.github.io/Documentation/docsv2/advanced/customGrantTypes.html