【问题标题】:ASP.NET Core Identity and Identity Server 4 - [Roles, Claims and IdentityResources]ASP.NET Core 身份和身份服务器 4 - [角色、声明和身份资源]
【发布时间】:2017-12-22 21:05:00
【问题描述】:

在将 IdentityServer 4 与 ASP.NET Identity 集成时,我想请您澄清一下。

我正在使用两个数据库上下文。 Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext<IdentityUser>IdentityServer4.EntityFramework.DbContexts.ConfigurationDbContext

Identity Server 4 正在使用 AspNetIdentity .AddAspNetIdentity<IdentityUser>()

所以IdentityUser 已经分配了IdentityUserClaims,并且在成功认证后正确反映在 JWT 令牌中。

现在的问题是,来自 IdentityServer4 ConfigurationDbContextIdentityResourceIdentityClaim:UserClaim 是什么?由于现在从 aspnet 身份使用声明,因此根本不使用此实体。我说的对吗?

另一个问题是ApiScopeClaims 现在在游戏中的情况如何?由于为其颁发了令牌的ApiScope,它们仍然被身份服务器使用。正确的?但现在我要让来自不同数据库上下文的 ApiScopeClaimIdentityUserClaim 保持同步。

最后一个问题是关于IdentityRolesIdentityRoleClaims,它们与IdentityUserClaims 不同。背后的想法是什么?在我的想法中,角色是针对特定业务角色的声明分组以便于管理,因此角色不应定义新声明,而应定义 IdentityUserClaims 的引用集。另外,我创建了角色,分配给用户,分配给范围的相应声明类型,结果是 - 分配给角色和用户具有此角色的声明不包含在 JWT 中。为什么?

感谢您的回答。

【问题讨论】:

    标签: asp.net entity-framework asp.net-identity identityserver4


    【解决方案1】:

    IdentityResource 是一个类别或一组声明。每个IdentityResource 可以有许多IdentityClaims,它们是对AspNetUserClaims 中实际声明的引用。内置的IdentityResources是openid和profile。

    ApiScopeClaims 是 Api 资源层次结构的一部分(与上面提到的身份资源相反。)

    ApiResource --has many--> ApiScopes --has many--> ApiScopeClaims.
    

    当用户向ApiScope 发出请求时,将声明类型添加到ApiScopeClaim 会将AspNetUserClaim(如果存在)附加到access_token

    IdentityRoleClaim(即AspNetRoleClaim)只是您可以针对特定角色添加的一些信息;它与用户无关,而仅与角色本身有关。

    听起来您想为声明的逻辑分组创建一个IdentityResource,然后在IdentityClaims 中定义这些声明类型。但是您需要一种方法来首先找出用户的角色,以便在scope 参数中请求适当的IdentityResource。或者实现一个 IdentityServer 接口,如 IProfileService 来在 IdentityServer 实例上执行此类工作。

    【讨论】:

    • IdentityRoleClaims 怎么样?它们是AspNetIdentity 的一部分,但它们是否包含在 IdentityServer4 颁发的 JWT 令牌中?我试过了,但它们不包括在内,也不存在角色声明。
    • 当 API 资源需要声明“角色”时,角色包含在适当的值中。但是如何包括角色声明?
    • 将“角色”声明类型添加到“openid”身份资源
    • 是的,这包括角色。但不是角色声明。我应该扩展.AddAspNetIdentity<> 吗?
    猜你喜欢
    • 2017-07-26
    • 2020-11-17
    • 1970-01-01
    • 2017-04-07
    • 2019-03-24
    • 2016-04-08
    • 2017-08-25
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多