我们有一个中央UserManagerApplication,可管理多个应用程序的用户和角色。在这个应用程序中,我们通常设置
问题:当Application2请求包含角色的范围(例如scopeApp1)时,将返回Reader和Admin角色声明,因为它们是在claimtypes而非范围上过滤的。
问题:如何仅请求角色的子集?
我们使用自定义用户服务,根据我的理解,我可以过滤掉返回的声明的位置在此方法中,我无法找到一种方法来确定客户端请求的范围:
public override Task GetProfileDataAsync(ProfileDataRequestContext context)
据我所知,我的选择是:
感谢您的帮助
Larsi
答案 0 :(得分:0)
我被指向https://github.com/IdentityServer/IdentityServer3/issues/474的一篇很好的解读,描述了这个问题。
此外,我在CustomUserService中添加声明,其中范围不可用。当我在自定义ClaimsProvider中添加声明时,我会得到一个稍微不同的签名
public override async Task<IEnumerable<Claim>> GetAccessTokenClaimsAsync(ClaimsPrincipal subject, Client client, IEnumerable<Scope> scopes, ValidatedRequest request)
这让我可以找出所要求的范围。