自定义授权类型


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>());

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容