Я пишу JS-приложение, в котором пользователь может выполнить аутентификацию с помощью Microsoft, oAuth2 и openId connect. Мне нужно, чтобы пользователь мог переключать учетные записи, поэтому выйдите из системы и войдите в другую учетную запись. В процессе выхода из системы пользователю предлагается «выбрать учетную запись для выхода», даже если существует только одна учетная запись (см. всплывающий скриншот ). Как я мог пропустить это приглашение?
Я знаю, что для входа в систему вы можете передать login_hint
или sid
(идентификатор сессии из идентификатора токена). Я попробовал это без успеха:
- С login_hint
в строке запроса URL у меня все еще есть приглашение «выбрать учетную запись» (логин__хинта preferred_username
для пользователя, который я успешно использую для входа в систему)
- С sid
и iss
в строке запроса URL я получаю ошибку InvalidSessionId
: AADSTS90007 Bad request. The passed session ID can't be parsed.
URL выглядит так:
https://login.microsoftonline.com/common/oauth2/v2.0/logout?sid=M.1234567890123456789&iss=https%3A%2F%2Flogin.microsoftonline.com%2F1234567a-1a23-1a2b-a123-12a345b67cde%2Fv2.0
(я пытался как с закодированным URL, как указано выше, так и с необработанным URL для iss, с тем же результатом)
Что я здесь не так делаю?
Чтобы дать немного больше контекста, это приглашение беспокоит меня, потому что мне нужно добиться тихого выхода из системы. Причина этого заключается в том, что всплывающее окно oAuth для входа в систему блокируется браузером, поскольку оно появляется спустя много времени после того, как пользователь нажал кнопку для переключения учетных записей. Также кажется, что это приглашение отключает post_logout_redirect_uri
, поэтому я не могу использовать поток перенаправления.
Смотрите этот выпуск GitHub: https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/735