با عرض سلام طبق مستندات Identity Server ، ثبت Claimsها در تابع GetProfileDataAsync بهتر است به صورت زیر نوشته شود:
زیرا تابع AddRequestedClaims تنها Claims هایی که کلاینت درخواست کرده را باز میگرداند ولی در صورتی که Claims ها به طور مستقیم به IssuedClaims اضافه شود حتی Claims هایی که کلاینت درخواست نکرده نیز برگردانده میشود. این مشکل میتواند یک نقص امنیتی به وجود بیاورد که کلاینت از طریق آن میتواند به Claims هایی که به آنها دسترسی ندارد و آنها را درخواست نکرده است دسترسی داشته باشد!
public async Task GetProfileDataAsync(ProfileDataRequestContext context)
{
var subjectId = context.Subject.GetSubjectId();
var claimsForUser = await _usersService.GetUserClaimsBySubjectIdAsync(subjectId).Select(c => new Claim(c.ClaimType, c.ClaimValue)).ToList();
context.AddRequestedClaims(claimsForUser );
}