我如何在声明中对特定于应用程序的角色建模

How do I model Application specific Roles in Claims

我们有一个中央 UserManagerApplication 来管理多个应用程序的用户和角色。在这个应用程序中,我们通常设置

问题:当 Application2 请求包含角色的范围(比如 scopeApp1)时,Reader 和管理员角色声明都将被返回,因为它们是根据声明类型而不是范围过滤的。

问题:如何只请求一部分角色?

我们使用自定义用户服务,根据我的理解,我可以在此方法中过滤掉返回的声明,但我无法找到一种方法来确定客户端请求的范围:

public override Task GetProfileDataAsync(ProfileDataRequestContext context)

据我所知,我的选择是:

感谢您的帮助

拉尔西

我在 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)

这让我可以找出请求的范围。