自定义授权类型

2017-02-25  本文已影响334人  灭蒙鸟

layout: docs-default

自定义授权类型

令牌 endpoint 可以扩展接受自定义授权类型。
下面是用自定义授权类型申请令牌的例子。

POST /connect/token
Authorization: Basic xxx:yyy

grant_type=my_custom_credential&
scope=api1&
my_credential=foobar&
some_other_parameter=quux&

使用IdentityServer的扩展机制,我们可以注册一个自定义授权的验证器来使用验证my_custom_credential`.
自定义授权验证器的工作室验证传入的数据,并把他映射到IdentityServer的用户上。
首先需要实现下面的接口:

public interface ICustomGrantValidator
{
    Task<CustomGrantValidationResult> ValidateAsync(ValidatedTokenRequest request);
    string GrantType { get; }
}

GrantType 属性用来指定哪一个自定义授权类型,这个验证器回来处理。ValidateAsync方法用来获取原始请求中的数据 (比如:像例子中的读取自定义的参数)并验证像作用域和客户端id等工作。
验证结果或者是一个映射到用户的Principal(带声明),或者是一个错误信息。
通过下面的方法来注册自定义授权验证器:

factory.CustomGrantValidators.Add( 
    new Registration<ICustomGrantValidator, MyCustomGrantValidator>());

要使用这个自定义验证器,需要按照下面的方法来定义配置:

请参看 rfc7521 - Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants 了解更多。

上一篇下一篇

猜你喜欢

热点阅读