#openid #openid-connect
#OpenID #OpenID-подключение
Вопрос:
Я создал веб-API, следуя образцу, добавленному для Signicat https://github.com/signicat/Quick-start-guide-Authentication-.NET-Core
Чтобы получить информацию о nin, я добавил for следующим образом:
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("nin")
Но в ответ я получаю null для nin. Я попытался получить информацию от пользователя следующим образом.
var user = HttpContext.User;
name = user.FindFirstValue("name");
nin = user.FindFirstValue("nin");
Есть ли что-нибудь, чего мне не хватает?
ПРИМЕЧАНИЕ: этот nin настроен для этого клиента и получает информацию о nin при выполнении ручных запросов через POSTMAN.
Ответ №1:
Обработчик OpenIdConnect блокирует все неизвестные утверждения по умолчанию, поэтому вам необходимо явно сопоставить интересующие вас утверждения, используя такой код, как
options.ClaimActions.MapUniqueJsonKey("nin", "nin");
options.ClaimActions.MapUniqueJsonKey("gender", "gender");
options.ClaimActions.MapUniqueJsonKey("birthdate", "birthdate");
Сначала вы должны проверить необработанный токен, возвращенный клиенту, и убедиться, что утверждение nin действительно существует, просто чтобы убедиться, что клиент действительно получает желаемое утверждение.