自定义授权类型


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 ValidateAsync(ValidatedTokenRequest request);
    string GrantType { get; }
}

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

factory.CustomGrantValidators.Add( 
    new Registration());

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

  • Flow 必须设置为 Custom
  • AllowedCustomGrantTypes必须包含自定义授权类型
    典型的自定义验证器用来在令牌类型间转换(比如:SAML到JWT或者Facebook到JWT),来桥接这两个身份管理系统。

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

你可能感兴趣的:(自定义授权类型)