asp.net Thinktecture.IdentityServer.v3 中的 Identity Role 声明



我有一个使用Thinktecure.IdentityServer.v3设置的示例身份验证服务器,其中还插入了Thinktecture.IdentityManager。我也在使用 asp.net 身份和实体框架,所以我也连接了来自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。

我已经使用身份管理器成功创建了一个用户,并创建了一个名为"Admin"的角色声明。我已将用户添加到此角色/声明中。

使用客户端

示例中的"JavaScript 隐式客户端",我使用正确的凭据通过身份验证服务器登录。我受到了应有的质询,然后使用标识令牌成功返回到客户端应用程序。

JavaScript 隐式客户端允许您查看身份令牌的内容。令牌中不存在"角色"声明列表...我理解,因为这些声明 asp.net 特定于身份。

我的问题真的是...如何在标识令牌中包含这些角色声明?

我是否需要创建一个名为"roles"的自定义作用域,应用声明规则以返回类型为"role"的声明,然后尝试在自定义声明提供程序中实现该声明规则?如果是这样,我还没有看到我们如何在任何文档中正确实现索赔规则。

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

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

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

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

将其添加到您的Scopes收藏中,也添加到您的Client ScopeRestrictions中。

现在,客户端需要在请求 id 令牌时将"角色"添加到 scope 参数。

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

最新更新