Как обращаться с провайдером идентификации, который использует временный NameID - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь использовать промежуточное программное обеспечение Sustainsys.Saml2.AspNetCore2 в своем приложении.Я успешно вошел в систему и зарегистрировал свой адрес электронной почты первый раз, вышел из системы и попытался войти снова.Проблема, с которой я сталкиваюсь, заключается в том, что NameID используется в качестве ProviderKey в ASP.NET Identity, и меня просят предоставить мою электронную почту снова, как если бы я вошел в систему в первый раз.Отлаживая, почему это происходит, я вижу, что вызов:

signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: true, bypassTwoFactor: true);

возвращает {Failed}.Кроме того, я заметил, что ProviderKey отличается от того, что находится в таблице AspNetUserLogins.Как мне подключить второй логин того же внешнего идентификатора к внутреннему идентификатору, созданному при первом логине?

1 Ответ

0 голосов
/ 24 октября 2018

Если NameID является временным, его нельзя использовать в качестве ключа поставщика в Asp.Net Identity.Самым простым способом является, конечно, поговорить с Idp и попросить их переключиться на постоянный NameID.

Если это невозможно, проверьте, есть ли какой-либо атрибут, который является фиксированным и подойдет ли для использования в качестве ключа,Затем вы можете переопределить уведомление AcsCommandResultCreated.Там удалите существующую заявку NameIdentifier и создайте новую из атрибута, который вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...