【发布时间】:2018-07-20 20:15:32
【问题描述】:
我使用 IdentityServer4 作为 OIDC 提供程序和 ASP.NET Core 2.0。
我已经阅读了几篇文章,以确保 IdentityServer 发出的声明最终出现在 ClaimsPrincipal(即 Auth Cookie)中,并设法通过 ClaimsAction 过滤来实现这一点。
但是我的问题是...... 当使用 ASP.NET Identity(和 EF 后备存储)运行 IdentityServer 时,ASP.NET Identity 属性如何映射到 IDS4 返回的声明。默认情况下,IDS4 返回类似 ...
的声明- “sub”:来自 IdentityUser.Id
- “名称”:来自 IdentityUser.UserName
- “preferred_username”:来自 IdentityUser.UserName
- “电子邮件”:来自 IdentityUser.Email
- “email_verified”:来自 IdentityUser.EmailConfirmed
我问这个的原因是我想映射
- “given_name”:来自 IdentityUser.FirstName(扩展属性)
- “family_name”:来自 IdentityUser.LastName(扩展属性)
因为在请求 PROFILE 范围时,IDS4 默认似乎不这样做。
此外,我想问一下存储用户属性的最佳实践是什么。使用 ASP.NET Identity DB 时,会创建两个表 ...
- AspNet 用户
- AspNetUserClaims
那么最好的做法是添加额外的用户属性...
- IdentityUser 上的属性(作为新字段添加到 AspNetUsers)或 ...
- AspNetUserClaims 中的其他声明(可以在注册或登录时使用 UserManager.AddClaimAsync() 添加)
【问题讨论】:
-
我也有同样的问题。从我所见,如果我将给定名称添加为声明,IdentiyServer 会自动将其发送到 id 令牌中。这让我认为索赔选项更好。除此之外,当并非所有用户都对该属性有价值时,将数据注册为声明具有优势。
标签: asp.net-identity identityserver4 claims