Signicat OpenID не получает nin в качестве ответа на запросы

#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 действительно существует, просто чтобы убедиться, что клиент действительно получает желаемое утверждение.