是否有任何方法可以覆盖身份服务器4令牌生成?是指用于获取用户名和密码以调用外部服务以获取令牌,然后由身份服务器4使用它的类或接口?
答案 0 :(得分:1)
如果我正确理解了您的问题,那么可以,有两种选择。
您可以创建一个自定义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如果这样做不能使您前进,我建议您阅读文档?
玩得开心! :)