asp.net Thinktecture.IdentityServer.v3 中的身份角色声明

asp.net Identity Role claims in Thinktecture.IdentityServer.v3

我有一个使用 Thinktecure.IdentityServer.v3 设置的示例 Auth 服务器,其中还插入了 Thinktecture.IdentityManager。我也在使用 asp.net Identity 和 Entity Framework,所以我也连接了 Thinktecture 的相关插件。下面的相关 NuGet 包

<package id="Thinktecture.IdentityManager" version="1.0.0-beta3" targetFramework="net451" />
<package id="Thinktecture.IdentityManager.AspNetIdentity" version="1.0.0-beta3" targetFramework="net451" />
<package id="Thinktecture.IdentityModel.Core" version="1.3.0" targetFramework="net451" />
<package id="Thinktecture.IdentityServer.v3" version="1.0.0-rc" targetFramework="net451" />
<package id="Thinktecture.IdentityServer.v3.AspNetIdentity" version="1.0.0-rc" targetFramework="net451" />
<package id="Thinktecture.IdentityServer.v3.EntityFramework" version="1.0.0-rc" targetFramework="net451" />

我已经根据 IdentityServer 示例存储库中包含的示例项目注册了 IdentityManager 和 IdentityServer。

我使用 IdentityManager 成功创建了一个用户,并创建了一个名为 'Admin' 的角色声明。我已将用户添加到此角色/声明。

使用客户端示例中的 'JavaScript Implicit Client',我使用正确的凭据通过我的 Auth 服务器登录。我应该受到挑战,然后 return 使用身份令牌成功地连接到客户端应用程序。

JavaScript 隐式客户端允许您查看身份令牌的内容。令牌中没有 'role' 声明列表...据我所知,因为这些声明是 asp.net 特定于身份的。

我的问题确实是...如何将这些角色声明包含在身份令牌中?

我是否需要创建名为 'roles' 的自定义范围,将 ClaimsRule 应用于 'role' 类型的 return 声明,然后尝试在自定义 ClaimsProvider 中实施该 ClaimsRule?如果是这样,我还没有看到我们如何在任何文档中正确实施 ClaimsRule。

asp.net Identity 似乎旨在在 RTM 之后得到开箱即用的支持...也许有更简单的方法?

如果需要任何其他信息或配置示例,我可以提供:)

事实证明...有一种更简单的方法(目前 out-of-the-box 提供)

StandardScopes.Roles 作为预定义范围提供。

将此添加到您的 Scopes collection 以及 ClientScopeRestrictions

现在客户端在请求id token时需要在scope参数中添加'roles'

这可能是不言自明的,但我错过了它,因为它不在示例存储库(我看到的)或任何文档中。希望这能帮助其他新手了解这个伟大的产品