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

标签 asp.net-identity thinktecture-ident-server claims

我有一个使用 Thinktecure.IdentityServer.v3 设置的示例身份验证服务器,其中还插入了 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 隐式客户端”,我使用正确的凭据通过我的身份验证服务器登录。我受到了应有的挑战,然后使用身份 token 成功返回到客户端应用程序。

JavaScript 隐式客户端允许您查看身份 token 的内容。 token 中不存在“角色”声明列表...我理解这些声明是特定于 asp.net 身份的。

我的问题实际上是...如何将这些角色声明包含在身份 token 中?

我是否需要创建一个名为“roles”的自定义作用域,应用 ClaimsRule 来返回“role”类型的声明,然后尝试在自定义 ClaimsProvider 中实现该 ClaimsRule?如果是这样,我还没有看到我们如何在任何文档中正确实现 ClaimsRule。

事实上,asp.net Identity 似乎旨在在 RTM 之后提供开箱即用的支持...也许有更简单的方法?

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

最佳答案

事实证明......有一种更简单的方法(并且目前是开箱即用的)

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

将其添加到您的 Scopes 集合以及 ClientScopeRestrictions 中。

现在,客户端在请求 id token 时需要将“角色”添加到范围参数中。

这可能是非常不言自明的,但我错过了它,因为它不在示例存储库(我看到的)或任何文档中。希望这可以帮助其他新手尝试这款出色的产品

关于asp.net-identity - Thinktecture.IdentityServer.v3 中的 asp.net 身份角色声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018189/

相关文章:

c# - 身份用户管理器通过电话号码查找

oauth-2.0 - 使用 IdentityServer3 保留表单例份验证

asp.net-mvc - 授权属性的 MVC5 声明版本

asp.net-mvc - 如何设置用户名在aspnet身份中不唯一

c# - Asp.Net 在外部程序集中访问声明身份

ASP.NET 将 DbContext 注入(inject) Identity UserManager

claims-based-identity - 使用 Thinktecture.IdentityServer3 作为联合提供者并转换声明

asp.net - 带有 WebForms 和 WebApi 的 Thinktecture IdentityServer v3

java - 将身份和访问管理与 Java 结合使用