با عرض سلام طبق مستندات Identity Server ، ثبت Claims‌ها در تابع  GetProfileDataAsync  بهتر است به صورت زیر نوشته شود:
  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 );
        }    
زیرا تابع AddRequestedClaims  تنها Claims هایی که  کلاینت درخواست کرده را باز میگرداند ولی در صورتی که Claims ‌ها به طور مستقیم به IssuedClaims   اضافه شود حتی Claims  هایی که کلاینت درخواست نکرده نیز برگردانده میشود. این مشکل میتواند یک نقص امنیتی به وجود بیاورد که کلاینت از طریق آن میتواند به Claims هایی که به آنها دسترسی ندارد و آنها را درخواست نکرده است دسترسی داشته باشد!
‫۵ سال و ۴ ماه قبل، چهارشنبه ۱۸ اردیبهشت ۱۳۹۸، ساعت ۱۶:۴۵
با عرض سلام؛ مطابق با مستندات جدید  Identity Server  استفاده از Implicit Flow برای کلاینتهای جاوا اسکریپتی دیگر پیشنهاد نمیشود و استفاده از Authorization Code + PKCE توصیه میشود. مثالی از پیاده سازی کلاینت جاوا اسکریپتی با PKCE در این لینک قابل مشاهده است.