ASP. NET Ядро React Template получает токен доступа - PullRequest
0 голосов
/ 12 апреля 2020

Есть ли способ получить токен доступа от identityserver4, желательно в функции post Login.cs html .cs. Я использую стандартную реакцию с шаблоном аутентификации (asp. net core 3.1) от visual studio. Спасибо!

1 Ответ

0 голосов
/ 13 апреля 2020

Вы не можете получить выпущенные токены в функции поста Login.cs html .cs.

Это связано с тем, что Asp. net Журналы проверки учетных данных c запускаются перед логикой выдачи токена Identity Server c. В OnPostAsync событии Login.cshtml.cs система идентификации будет проверять пользователя в базе данных и входить в систему, используя:

var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);

Если проверка пользователя пройдена, она будет перенаправлена ​​на локальный URL-адрес, такой как /connect/authorize/callback?client_id=react&redirect_uri=https%3A%2F%2Flocalhost%3A44362%2Fauthentication%2Flogin-callback&response_type=code&scope=reactAPI%20openid%20profile&state=xxxxx&code_challenge=xxxxx&code_challenge_method=S256&response_mode=query, что URL фактически является запросом кода авторизации OpenID Connect (PKCE). После перенаправления промежуточное ПО сервера идентификации 4 будет обрабатывать запрос кода и токена и, наконец, выдавать токены. Таким образом, в функции OnPostAsync вы не можете получить токены.

Если вы хотите получить токены, вы можете получить токены из встроенных событий сервера идентификации , таких как TokenIssuedSuccessEvent вы также можете получить токены со стороны клиента React, в которых событие / место для получения токенов основано на вашем требовании.

...