【发布时间】:2020-09-24 10:30:35
【问题描述】:
我有一个 IdentityServer4,当用户有大约 10 个角色时,cookie 似乎呈指数增长。现在每次我尝试登录时都会收到一个 400 错误请求太长,因为 cookie 太大了。
我收到的 cookie 被分成 5 个大小约为 4008 的块:
这些 cookie 似乎设置在应用程序的 signin-oidc 端点上。
我在身份服务器中使用默认的 cookie 设置 - 那里没有更改。
有什么想法会导致这些 cookie 增长得如此之快吗? Id_token 和 Access_token 的大小似乎比这些 cookie 小很多。
编辑:我分配给用户的每个角色似乎都将 400 大小添加到块中的最后一个 cookie,这对我来说似乎非常大?
编辑 2:我使用自定义配置文件服务会影响最终 cookie 的大小:
public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
var subjectId = context.Subject.GetSubjectId();
var user = await _userManager.FindByIdAsync(subjectId);
if (user == null) return;
var claims = new List<Claim>
{
new Claim("username", user.UserName),
new Claim("email", user.Email),
new Claim("firstname", user.FirstName),
new Claim("lastname", user.LastName)
};
var roles = await _userManager.GetRolesAsync(user);
foreach (var role in roles)
{
claims.Add(new Claim("role", role));
}
var userClaims = await _userManager.GetClaimsAsync(user);
foreach (var userClaim in userClaims)
{
claims.Add(new Claim(userClaim.Type, userClaim.Value));
}
context.IssuedClaims = claims;
}
【问题讨论】:
标签: c# identityserver4