У меня проблема с некоторыми значениями, возвращаемыми в токене id сервером Identity 4. Идентификационный токен и конечная точка userinfo возвращают имя пользователя вместо имени для утверждения имени.
{
........
"preferred_username": "JohnD",
"name": "JohnD",
"email": "xxx@xxx.dk",
.....
}
Как видите, и имя_пользователя_имя, и имя имеют одинаковое значение. Если я проверю в базе данных.
- Имя пользователя: JohnD
- Имя: Джон Доу
- E-mail: xxx@xxx.dk
Я скопировал DefaultProfileService.cs Непосредственно с сервера идентификации 4.
Так что мой код такой же
/// <summary>
/// This method is called whenever claims about the user are requested (e.g. during token creation or via the userinfo endpoint)
/// </summary>
/// <param name="context">The context.</param>
/// <returns></returns>
public virtual Task GetProfileDataAsync(ProfileDataRequestContext context)
{
context.LogProfileRequest(Logger);
context.AddRequestedClaims(context.Subject.Claims);
context.LogIssuedClaims(Logger);
return Task.CompletedTask;
}
Я вижу, что context.Subject.Claims, кажется, уже заполнен этими данными, и я не могу шов удалить или переместить его.
Я не уверен, как это исправить
Обновление
Вместо этого я попытался добавить требование предпочитаемого_имя_пользователя, и теперь я получаю удвоение.
"preferred_username": [
"John Doe",
"JohnD"
]
Я также пытался удалить заявку из списка, но только для чтения.