相关疑难解决方法(0)

ASP.Net Identity和IdentityServer4声明

我正在使用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时,将创建两个表...

  • AspNetUsers
  • AspNetUserClaims

因此,最佳实践是将其他用户属性添加为...

  1. IdentityUser上的属性(作为新字段添加到AspNetUsers中)或...
  2. AspNetUserClaims中的其他声明(可以在注册或登录时使用UserManager.AddClaimAsync()添加这些声明)

identityserver4

5
推荐指数
1
解决办法
357
查看次数

将 ASP.Net Identity 表链接到用户详细信息表

我正在尝试将我的 Identity 用户表链接到我创建的用于跟踪其他用户信息的用户详细信息表。该用户详细信息表称为 UserProfile。

我遇到了这个链接,但它在 .NET Core 2.1 中不起作用: Link ASP.NET Identity users to user detail table

这是我目前所拥有的:

public class ApplicationUser : IdentityUser
{

    [Key]
    public override string Id { get; set; }

    [ForeignKey("Id")]
    public virtual UserProfile UserProfile { get; set; }

}

[Table("UserProfile")]
public class UserProfile
{
    [Key, ForeignKey("User")]
    public string UserId { get; set; } // UserId (Primary key) 
    public string UserName { get; set; } // UserName 
    public string FirstName { get; set; } // FirstName
    public …
Run Code Online (Sandbox Code Playgroud)

.net asp.net-identity entity-framework-core asp.net-core asp.net-core-2.1

4
推荐指数
1
解决办法
1962
查看次数