身份服务器4:自定义令牌生成

时间:2020-07-27 09:56:29

标签: identityserver4

是否有任何方法可以覆盖身份服务器4令牌生成?是指用于获取用户名和密码以调用外部服务以获取令牌,然后由身份服务器4使用它的类或接口?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么可以,有两种选择。

您可以创建一个自定义ProfileService来在生成声明时调用您的外部服务,然后可以从外部服务中获取数据,然后返回List<Claim>以获取您感兴趣的信息。在GetProfileDataAsync(ProfileDataRequestContext context)方法中。

然后您通过身份服务器构建器中间件注册配置文件服务

var identityServerBuilder = services.AddIdentityServer();  
identityServerBuilder.AddProfileService<ProfileService>()

当您使用访问令牌(即与第三方API的通信)时,您可以仅依靠HTTPContext来按名称查找索赔并获取所需的值,我通常会编写一个具有getter方法的ClaimsProvider返回我需要的声明,这意味着我可以轻松模拟它,而不必考虑模拟httpcontext。像这样

enter image description here

有可能涉入生命周期的其他部分,例如进行检查:http://docs.identityserver.io/en/latest/topics/custom_token_request_validation.html如果这样做不能使您前进,我建议您阅读文档?

玩得开心! :)