【发布时间】:2020-10-08 17:19:12
【问题描述】:
有没有办法覆盖身份服务器 4 令牌生成?是指获取用户名和密码以调用外部服务以获取令牌然后由身份服务器 4 使用的类或接口?
【问题讨论】:
标签: identityserver4
有没有办法覆盖身份服务器 4 令牌生成?是指获取用户名和密码以调用外部服务以获取令牌然后由身份服务器 4 使用的类或接口?
【问题讨论】:
标签: identityserver4
如果我正确理解您的问题,那么是的,有几种选择。
您可以创建一个自定义 ProfileService 以在生成声明时调用您的外部服务,然后您可以从您的外部服务中获取数据,然后为您感兴趣的信息返回一个 List<Claim>。您可以将所有内容写在GetProfileDataAsync(ProfileDataRequestContext context) 方法。
然后你通过身份服务器构建器中间件注册配置文件服务
var identityServerBuilder = services.AddIdentityServer();
identityServerBuilder.AddProfileService<ProfileService>()
当您使用访问令牌(即与第三方 API 通信)时,您可以简单地依靠 HTTPContext 按名称查找声明并获取您需要的值,我通常编写一个具有 getter 方法的 ClaimsProvider 返回我需要的声明意味着我可以轻松地模拟它,而不必考虑模拟 httpcontext。像这样的
可以与生命周期的其他部分挂钩,例如:http://docs.identityserver.io/en/latest/topics/custom_token_request_validation.html 如果这不能推动您前进,我建议您阅读文档?
玩得开心! :)
【讨论】: