如何自定义identityserver的cookie生成器?(将声明添加到令牌中,但不添加到cookie中)



我使用的是IdentityServer,我有一个React客户端。因此,当我在检查凭据后尝试登录到我的客户端时,IDP会在我的浏览器中生成一些cookie。我阅读了这些cookie(特别是.AspNetCore.Identity.Application cookie(,发现这些cookie中存储了一些用户信息,如声明和角色。所以我想自定义cookie生成器,并从中删除一些无用的信息。有两个问题:

1-我如何用自定义的cookie生成器替换默认的cookie生成器?

2-任何其他流程是否需要索赔和角色,或者我可以在没有任何顾虑的情况下删除?

我找到了解决方案:我们可以使用此链接自定义身份验证cookie。

如果我想总结这篇文章,你应该更改登录操作伙伴:

1-如果您使用PasswordSignInAsync,则应将其更改为CheckPasswordSignInAsync,因为第一个使用默认的cookie生成工作流,但第二个没有创建cookie的操作。

2-对于创建cookie,您应该使用HttpContext.SignInAsync方法。它将为您生成身份验证cookie。请记住,SubId是必须包含在cookie中的必需声明。这是我的代码的cookie生成器部分:

var claims = new List<Claim> { new Claim(JwtClaimTypes.Subject, user.Id.ToString()) };
claims.Add(new Claim(ClaimTypes.Name, user.UserName));
claims.Add(new Claim("user_type", $@"{user.UserType}"));
var claimIdentity = new ClaimsIdentity(claims, "pwd");
await HttpContext.SignInAsync("Identity.Application",new ClaimsPrincipal(claimIdentity),new AuthenticationProperties
{
IsPersistent = true
});

最新更新