【问题标题】:asp.net Identity Role claims in Thinktecture.IdentityServer.v3Thinktecture.IdentityServer.v3 中的 asp.net 身份角色声明
【发布时间】:2015-03-12 22:42:26
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    将此添加到您的Scopes 集合以及您的ClientScopeRestrictions

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

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

    【讨论】:

    • 如何将角色范围添加到范围限制中?用哪个名字? “角色”?
    • @behroozdalvandi 这是他们的示例项目中的文件链接github.com/IdentityServer/IdentityServer3.Samples/blob/master/…
    • @behroozdalvandi 相关的文章是AllowedScopes = new List&lt;string&gt; {... Constants.StandardScopes.Roles, ...} 我认为他们在这个更高版本的IdServ中将ScopeRestrictions更改为AllowedScopes
    • 好吧,我做到了,但是当我编写一个输出访问令牌中所有声明的方法时,它不包括来自数据库的任何角色声明。
    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2015-09-06
    • 2021-07-20
    • 2018-02-10
    • 2013-08-19
    • 2017-12-22
    • 2018-04-11
    相关资源
    最近更新 更多