У меня IdentityServer4 работает в Azure по URL-адресу https, и я использую проект Angular CLI с библиотекой angular-oauth2-oidc для обработки неявного потока. Я пытаюсь настроить единый выход, но он работает неправильно.
Я звоню logOut
на OAuthService
, который был автоматически настроен (через документ Discovery) для использования URL-адреса выхода на сервере аутентификации, т. Е. https://my-id4-server.example.com/connect/endsession
с параметрами строки запроса содержащий token_hint
и postLogoutUri
.
По некоторым причинам фактическое поведение заключается в том, что IdentityServer4 перенаправляет ( 302 ) браузер на URL https://my-id4-server.example.com/account/logout?logoutid=...
, для которого браузер получает 404 * 1020. *. Кроме того, если я открою страницы IdentityServer на отдельной вкладке, я увижу, что мой сеанс еще жив.
ожидаемое поведение - это то, что мой сеанс завершен, и я перенаправлен обратно в мой SPA.
На стороне ID4Server я настроил:
RedirectUris
и PostLogoutRedirectUris
с http://localhost:4200
(где мой SPA работает в настоящее время), среди прочих;
AllowedGrantTypes
установлено на Implicit
AllowedCorsOrigins
также разрешает мой локальный SPA
Кроме того, я вижу, что конечная точка endsession
правильно настроена в конечной точке конфигурации .well-known
.
На стороне SPA я настроил issuer
, redirectUri
, clientId
и scope
. Вход с перенаправлением назад работает просто отлично.
Итог: что не так, если конечная точка endsession
перенаправляет на account/logout
, что, в свою очередь, дает 404?