IdenityServer3 windows auth支持和自定义授权流程支持

时间:2016-03-16 12:20:12

标签: windows-authentication identityserver3

我正在寻找可以支持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中启用自定义授权类型吗?

1 个答案:

答案 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