ASP.NET核心身份和身份服务器4 - [角色,声明和身份资源]

时间:2017-07-18 06:37:48

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

在将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 IdentityResource中的IdentityClaim:UserClaimConfigurationDbContext是什么?由于现在使用来自aspnet身份的声明,因此根本不使用该实体。我是对的吗?

另一个问题是游戏中ApiScopeClaims现在如何?它们仍由Identity Server使用,因为ApiScope为其颁发了令牌。对?但是现在由我来保持同步ApiScopeClaimIdentityUserClaim来自不同的数据库上下文。

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

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

card是一类或一组索赔。每个IdentityResource都可以包含多个IdentityResource,这些IdentityClaimsAspNetUserClaims中实际声明的实际参考。内置的IdentityResources是开放的和个人资料。

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

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

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

IdentityRoleClaim(即AspNetRoleClaim)只是您可以了解的有关特定角色的信息;它与用户无关,只与角色本身有关。

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