OpenID Connect на платформе удостоверений Майкрософт
OpenID Connect (OIDC) расширяет протокол авторизации OAuth 2.0 для использования в качестве другого протокола проверки подлинности. С помощью OIDC можно включить единый вход между приложениями с поддержкой OAuth через маркер безопасности, под названием маркер идентификатора.
Полная спецификация для OIDC доступна на веб-сайте OpenID Foundation в статье о спецификации OpenID Connect Core 1.0.
Поток протокола: вход
На следующей схеме показан базовый поток входа OpenID Connect. Шаги в потоке подробно описаны в последующих разделах этой статьи.
Включение маркеров идентификаторов
Маркер идентификатора, представленный OpenID Connect, выдан сервером авторизации, платформа удостоверений Майкрософт, когда клиентское приложение запрашивает один из них во время проверки подлинности пользователя. Маркер идентификатора позволяет клиентскому приложению проверить удостоверение пользователя и получить другие сведения (утверждения) о нем.
Маркеры идентификатора не выдаются по умолчанию для приложения, зарегистрированного с помощью платформы удостоверений Майкрософт. Маркеры идентификатора приложения включены с помощью одного из следующих методов:
- Войдите в центр администрирования Microsoft Entra.
- Перейдите к приложениям> удостоверений>Регистрация приложений<> your application>>Authentication.
- В разделе Конфигурации платформ щелкните Добавить платформу.
- В открывающейся области выберите соответствующую платформу для приложения. Например, выберите Веб-приложение для веб-приложения.
- В разделе URI перенаправления добавьте URI перенаправления приложения. Например,
https://localhost:8080/
. - В разделе Неявное предоставление разрешения и гибридные потоки установите флажок Токены ИД (используются для неявных и гибридных потоков).
Или сделайте так:
- Выберите приложения> удостоверений>Регистрация приложений>< your application>>Manifest.
- В манифесте приложения регистрации приложения задайте для
oauth2AllowIdTokenImplicitFlow
значениеtrue
.
Если маркеры идентификатора не включены для приложения и запрашивается один из них, платформа удостоверений Майкрософт возвращает ошибку, аналогичную следующейunsupported_response
:
The provided value for the input parameter 'response_type' isn't allowed for this client. Expected value is 'code' (Указанное значение параметра response_type запрещено для данного клиента. Ожидаемое значение: code)..
Запрос маркера идентификатора через указание response_type
для id_token
, описан в разделе Отправка запроса на вход далее в статье.
Получение документа конфигурации OpenID
Поставщики OpenID, такие как платформа удостоверений Майкрософт, предоставляют документ конфигурации поставщика OpenID в общедоступной конечной точке, содержащей конечные точки OIDC поставщика, поддерживаемые утверждения и другие метаданные. Клиентские приложения могут использовать метаданные для обнаружения URL-адресов, используемых для проверки подлинности и открытых ключей подписывания службы проверки подлинности.
Библиотеки аутентификации являются наиболее распространенными объектами-получателями документа конфигурации OpenID, который они используют для обнаружения URL-адресов аутентификации, открытых ключей подписывания поставщика и других метаданных службы. Если в приложении используется библиотека проверки подлинности, скорее всего, вам не потребуется вручную запрашивать запросы на запросы и ответы из конечной точки документа конфигурации OpenID.
Поиск универсального кода ресурса (URI) для документа конфигурации OpenID приложения
Каждая регистрация приложения в идентификаторе Microsoft Entra предоставляется общедоступная конечная точка, которая служит документом конфигурации OpenID. Чтобы определить URI конечной точки документа конфигурации для приложения, добавьте известный путь конфигурации OpenID к URL-адресу центра регистрации приложения.
- Известный путь к документу конфигурации:
/.well-known/openid-configuration
- URL-адрес центра:
https://login.microsoftonline.com/{tenant}/v2.0
Значение {tenant}
зависит от аудитории входа приложения, как показано в следующей таблице. URL-адрес центра также зависит от облачного экземпляра.
значение | Описание |
---|---|
common |
Пользователи с личной учетной записью Майкрософт и рабочей или учебной учетной записью из идентификатора Microsoft Entra могут войти в приложение. |
organizations |
Только пользователи с рабочими или учебными учетными записями из идентификатора Microsoft Entra могут войти в приложение. |
consumers |
Вход в приложение могут выполнять только пользователи с личной учетной записью Майкрософт. |
Directory (tenant) ID или contoso.onmicrosoft.com |
Только пользователи из определенного клиента Microsoft Entra (участники каталога с рабочей или учебной учетной записью или гостями каталога с личной учетной записью Майкрософт) могут войти в приложение. Это значение может быть доменным именем клиента Microsoft Entra или идентификатором клиента в формате GUID. |
Совет
Обратите внимание, что при использовании common
или consumers
центра для личных учетных записей Майкрософт необходимо настроить приложение ресурсов для поддержки такого типа учетных записей в соответствии с signInAudience.
Чтобы найти документ конфигурации OIDC в Центре администрирования Microsoft Entra, войдите в Центр администрирования Microsoft Entra, а затем:
- Перейдите к приложениям> удостоверений>Регистрация приложений<> your application>>Endpoints.
- Найдите URI в разделе документа метаданных OpenID Connect.
Образец запроса
Следующий запрос получает метаданные конфигурации OpenID из common
конечной точки документа конфигурации OpenID центра в общедоступном облаке Azure:
GET /common/v2.0/.well-known/openid-configuration
Host: login.microsoftonline.com
Совет
Попробовать! Чтобы просмотреть документ конфигурации OpenID для центра common
приложения, перейдите по адресу https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration.
Пример ответа
Метаданные конфигурации возвращаются в формате JSON, как показано в следующем примере (усеченный для краткости). Метаданные, возвращаемые в ответе в формате JSON, подробно описаны в спецификации обнаружения OpenID Connect 1.0.
{
"authorization_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
"token_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt"
],
"jwks_uri": "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys",
"userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
"subject_types_supported": [
"pairwise"
],
...
}
Отправка запроса на вход
Чтобы выполнить аутентификацию пользователя и запросить маркер идентификатора для использования в приложении, направьте агент пользователя в конечную точку /authorize платформы удостоверений Майкрософт. Этот запрос похож на первый этап потока кода авторизации OAuth 2.0, но с несколькими различиями, которые приведены ниже.
- Включите область
openid
в параметрscope
. - Укажите
id_token
в параметреresponse_type
. - Включите параметр
nonce
.
Пример запроса входа (разрывы строк, включенные только для удобства чтения):
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=id_token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=form_post
&scope=openid
&state=12345
&nonce=678910
Параметр | Условие | Description |
---|---|---|
tenant |
Обязательное поле | Значение {tenant} в пути запроса можно использовать для того, чтобы контролировать вход пользователей в приложение. Допустимые значения: common , organizations , consumers , а также идентификаторы клиента. Чтобы узнать больше, ознакомьтесь с основами протокола. В гостевых сценариях, в которых пользователь из одного клиента выполняет вход в другой, необходимо предоставить идентификатор клиента, чтобы вход выполнялся правильно. |
client_id |
Обязательное поле | Идентификатор приложения (клиента), который центр администрирования Microsoft Entra — Регистрация приложений, назначенный приложению. |
response_type |
Обязательное поле | Должен включать id_token для входа в OpenID Connect. |
redirect_uri |
Рекомендуемая конфигурация | Универсальный код ресурса (URI) перенаправления приложения, на который можно отправлять ответы аутентификации для их получения приложением. Он должен в точности соответствовать одному из универсальных кодов ресурса (URI) перенаправления, зарегистрированных на портале, но иметь форму URL-адреса. В противном случае конечная точка выбирает одну зарегистрированную redirect_uri случайным образом, чтобы отправить пользователя обратно. |
scope |
Обязательное поле | Список областей с разделителями-пробелами. При использовании протокола OpenID Connect он должен содержать область openid , что преобразуется в разрешение Вход в пользовательском интерфейсе предоставления согласия. Для предоставления согласия этот запрос может также включать в себя другие области. |
nonce |
Обязательное поле | Значение, созданное и отправленное приложением в запросе на маркер идентификатора. То же значение nonce включается в маркер идентификатора, возвращенный приложению платформа удостоверений Майкрософт. Чтобы устранить атаки с повторением маркеров, приложение должно проверить, что значение nonce в маркере идентификатора совпадает со значением, которое оно отправляет при запросе маркера. Значение обычно является уникальной случайной строкой. |
response_mode |
Рекомендуемая конфигурация | Указывает метод, с помощью которого следует отправлять полученный код авторизации приложению. Может иметь значение form_post или fragment . Для веб-приложений рекомендуется использовать response_mode=form_post , чтобы обеспечить наиболее безопасную передачу маркеров в приложение. |
state |
Рекомендуемая конфигурация | Значение, включенное в запрос, которое также возвращается в ответе маркера. Это может быть строка любого содержания. Как правило, с целью предотвращения подделки межсайтовых запросов используется генерируемое случайным образом уникальное значение. Параметр state используется также для кодирования сведений о состоянии пользователя в приложении перед созданием запроса на аутентификацию, например сведений об открытой на тот момент странице или представлении. |
prompt |
Необязательно | Указывает требуемый тип взаимодействия с пользователем. На текущий момент единственные допустимые значения — login , none , consent и select_account . Утверждение prompt=login требует от пользователя ввести учетные данные по запросу. Единый вход не сработает. Параметр prompt=none имеет противоположный смысл и должен быть связан с login_hint , чтобы указать, какой пользователь должен войти в систему. Эти параметры гарантируют, что для пользователя не будут выводиться никакие интерактивные запросы. Если запрос не удается выполнить автоматически с помощью единого входа, платформа удостоверений Майкрософт возвращает ошибку. Причины включают отсутствие вошедшего пользователя, указанный пользователь не вошел в систему, или вошло несколько пользователей, но не было предоставлено указаний. Утверждение prompt=consent активирует диалоговое окно предоставления согласия OAuth после входа пользователя в систему. В нем у пользователя запрашиваются разрешения для приложения. Наконец, select_account отображает пользователя селектор учетной записи, отрицая единый выход, но позволяя пользователю выбрать учетную запись, с которой они намерены войти, не требуя ввода учетных данных. Вы на можете использовать одновременно login_hint и select_account . |
login_hint |
Необязательно | Этот параметр можно использовать для предварительного заполнения поля имени пользователя и адреса электронной почты страницы входа пользователя, если вы знаете имя пользователя заранее. Этот параметр обычно используется в приложениях при повторной аутентификации после извлечения необязательного утверждения login_hint из предыдущего сеанса входа. |
domain_hint |
Необязательно | Область пользователя в федеративном каталоге. Если используется этот параметр, процесс обнаружения на основе электронной почты, который проходит пользователь на странице входа, пропускается, что немного оптимизирует работу. Для клиентов, объединяемых в федерацию на основе локального каталога, например AD FS, это часто позволяет автоматически входить в систему благодаря наличию текущего сеанса. |
На текущем этапе пользователю предлагается ввести учетные данные и завершить аутентификацию. Платформа удостоверений Майкрософт проверяет, согласился ли пользователь предоставить разрешения, указанные в параметре запроса scope
. Если пользователь не предоставил какие-либо из этих разрешений, платформа удостоверений Майкрософт запросит их у него. Вы можете узнать больше о разрешениях, согласии и мультитенантных приложениях.
После того как пользователь выполнит аутентификацию и предоставит разрешения, платформа удостоверений Майкрософт вернет приложению ответ на указанный универсальный код ресурса (URI) перенаправления с помощью метода, указанного в параметре response_mode
.
Успешный ответ
Успешный ответ при использовании response_mode=form_post
аналогичен следующему:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&state=12345
Параметр | Описание |
---|---|
id_token |
Маркер идентификации, запрошенный приложением. Вы можете использовать параметр id_token для проверки личности пользователя и запуска сеанса пользователя. Дополнительные сведения о маркерах идентификатора и их содержимом см. в справочнике по маркерам идентификатора. |
state |
Если запрос содержит параметр state , то в ответе должно отображаться то же значение. Приложение должно убедиться, что значения параметра state в запросе и отклике идентичны. |
Отклик в случае ошибки
Сообщения об ошибках также можно отправлять на универсальный код ресурса (URI) перенаправления, чтобы приложение могло их обработать, например:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
error=access_denied&error_description=the+user+canceled+the+authentication
Параметр | Описание |
---|---|
error |
Строка кода ошибки, которую можно использовать для классификации типов возникших ошибок и реагирования на них. |
error_description |
Конкретное сообщение об ошибке, с помощью которого можно определить первопричину возникновения ошибки аутентификации. |
Коды ошибок конечной точки авторизации
В таблице ниже описаны коды ошибок, которые могут возвращаться в параметре error
сообщения об ошибке.
Код ошибки | Description | Действие клиента |
---|---|---|
invalid_request |
Ошибка протокола, например отсутствует обязательный параметр. | Исправьте запрос и отправьте его повторно. Эту ошибку разработки следует выявить во время тестирования приложения. |
unauthorized_client |
Клиентское приложение не может запрашивать код авторизации. | Эта ошибка может возникать, если клиентское приложение не зарегистрировано в идентификаторе Microsoft Entra или не добавляется в клиент Microsoft Entra пользователя. Приложение может предложить пользователю инструкции по установке приложения и добавить его в идентификатор Microsoft Entra. |
access_denied |
Владелец ресурса не дал согласия. | Клиентское приложение может уведомить пользователя, что для продолжения работы необходимо согласие пользователя. |
unsupported_response_type |
Сервер авторизации не поддерживает тип ответа в запросе. | Исправьте запрос и отправьте его повторно. Эту ошибку разработки следует выявить во время тестирования приложения. |
server_error |
Сервер обнаружил непредвиденную ошибку. | Повторите запрос. Эти ошибки могут возникать в связи с временными условиями. Из клиентского приложения может поступить сообщение о том, что его ответ задерживается из-за временной ошибки. |
temporarily_unavailable |
Сервер временно занят и не может обработать запрос. | Повторите запрос. Из клиентского приложения может поступить сообщение о том, что его ответ задерживается из-за временного состояния. |
invalid_resource |
Целевой ресурс недопустим, так как он не существует, идентификатор Microsoft Entra ID не может найти его или неправильно настроен. | Это означает, что ресурс не существует или не настроен в арендаторе. Приложение может предложить пользователю инструкции по установке приложения и его добавлению в идентификатор Microsoft Entra. |
Проверка маркера идентификации
Получение маркера идентификатора в приложении может быть недостаточным для полной аутентификации пользователя. Необходимо также проверить сигнатуру маркера идентификатора и сопоставить утверждения с требованиями вашего приложения. Как и все поставщики OpenID, маркеры идентификатора платформы удостоверений Майкрософт — это маркеры JSON Web Token (JWT), подписанные с помощью шифрования открытого ключа.
Веб-приложения и веб-API, использующие маркеры идентификатора для авторизации, должны проверять их, так как такие приложения получают доступ к данным. Но другие типы приложений могут не иметь преимущества от проверки маркера идентификатора. Собственные и одностраничные приложения (SPA), например, редко используют проверку маркеров идентификатора, так как любая сущность с физическим доступом к устройству или браузеру может потенциально обойти проверку.
Ниже приведены два примера обхода проверки маркера:
- Предоставление фиктивных маркеров или ключей путем изменения трафика для устройства.
- Отладка приложения и пошаговое выполнение с обходом логики проверки во время выполнения программы.
Если вы проверяете маркеры идентификатора в приложении, рекомендуем не выполнять это вручную. Вместо этого используйте библиотеку проверки маркеров, чтобы анализировать и проверять маркеры. Библиотеки проверки маркеров доступны для большинства языков разработки и платформ.
Что нужно проверить в маркере идентификатора
Помимо проверки подписи маркера идентификатора, необходимо проверить несколько его утверждений, как описано в описании проверки маркера идентификатора. См. также важную информацию о смене ключей подписывания.
Некоторые другие проверки являются общими и зависят от сценария приложения, в том числе:
- Обеспечение регистрации пользователя или организации в приложении.
- Предоставление пользователю необходимого уровня авторизации и привилегий.
- Обеспечение определенной надежности проверки подлинности, например многофакторной проверки подлинности.
После проверки маркера идентификатора можно начать сеанс с пользователем и использовать сведения в утверждениях маркера для персонализации приложения, отображения или хранения данных в нем.
Схема протокола: получение маркера доступа
Многим приложениям требуется не только выполнить вход пользователя, но и получить доступ к защищенному ресурсу, например к веб-API от имени пользователя. Этот сценарий объединяет OpenID Connect для получения маркера идентификатора для аутентификации пользователя и OAuth 2.0, чтобы иметь маркер доступа для защищенного ресурса.
Полный поток входа OpenID Connect и получения маркера представлен на этой схеме:
Получение маркера доступа для конечной точки UserInfo
Кроме маркера идентификатора, сведения о прошедшем аутентификацию пользователя также предоставляются в конечную точку UserInfo OIDC.
Чтобы получить маркер доступа для конечной точки UserInfo OIDC, измените запрос на вход, как описано ниже:
// Line breaks are for legibility only.
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=00001111-aaaa-2222-bbbb-3333cccc4444 // Your app registration's Application (client) ID
&response_type=id_token%20token // Requests both an ID token and access token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F // Your application's redirect URI (URL-encoded)
&response_mode=form_post // 'form_post' or 'fragment'
&scope=openid+profile+email // 'openid' is required; 'profile' and 'email' provide information in the UserInfo endpoint as they do in an ID token.
&state=12345 // Any value - provided by your app
&nonce=678910 // Any value - provided by your app
Чтобы получить маркер доступа для приложения, вместо response_type=token
можно использовать поток кода авторизации, поток кода устройства или маркер обновления.
Успешный ответ маркера
Успешный ответ при использовании response_mode=form_post
:
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
access_token=eyJ0eXAiOiJKV1QiLCJub25jZSI6I....
&token_type=Bearer
&expires_in=3598
&scope=email+openid+profile
&id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI....
&state=12345
Параметры ответа означают одно и то же, независимо от потока, используемого для их получения.
Параметр | Описание |
---|---|
access_token |
Маркер, используемый для вызова конечной точки UserInfo. |
token_type |
Всегда имеет значение Bearer. |
expires_in |
Время до истечения срока действия маркера доступа (в секундах). |
scope |
Разрешения, предоставленные для маркера доступа. Так как конечная точка UserInfo размещена в Microsoft Graph, scope может содержать другие ранее предоставленные разрешения для приложения (например, User.Read ). |
id_token |
Маркер идентификации, запрошенный приложением. Вы можете использовать маркер идентификации для проверки личности пользователя и запуска сеанса пользователя. Дополнительные сведения о маркерах идентификатора и их содержимом см. в справочнике по маркерам идентификатора. |
state |
Если запрос содержит параметр "state", в ответе должно отображаться то же значение. Приложение должно убедиться, что значения параметра state в запросе и отклике идентичны. |
Предупреждение
Не пытайтесь проверить или прочесть маркеры для любого API, который вам не принадлежит, включая маркеры в этом примере, в коде. Маркеры для служб Майкрософт могут использовать специальный формат, который не будет проверяться как JWT и может также быть зашифрован для пользователей-потребителей (учетная запись Майкрософт). Несмотря на то, что чтение маркеров является полезным средством отладки и обучения, не задавайте зависимости от него в коде или не опирайтесь на конкретные сведения о токенах, которые не предназначены для контролируемого вами API.
Отклик в случае ошибки
Сообщения об ошибках также можно отправлять на универсальный код ресурса (URI) перенаправления, чтобы приложение могло их правильно обработать.
POST /myapp/ HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
error=access_denied&error_description=the+user+canceled+the+authentication
Параметр | Описание |
---|---|
error |
Строка кода ошибки, которую можно использовать для классификации типов возникших ошибок и реагирования на них. |
error_description |
Конкретное сообщение об ошибке, с помощью которого можно определить первопричину возникновения ошибки аутентификации. |
Описание возможных кодов ошибок и рекомендуемые ответы клиента см. в разделе Коды ошибок конечной точки авторизации.
После получения кода авторизации и маркера идентификации можно выполнить вход пользователя в систему и получить маркеры доступа от его имени. Чтобы войти в систему, необходимо проверить маркер идентификатора, как описано в маркерах проверки. Для получения маркеров доступа следует выполнить действия, описанные в документации по потоку кода OAuth.
Вызов конечной точки UserInfo
Просмотрите документацию по UserInfo, чтобы узнать, как вызвать конечную точку UserInfo с помощью этого маркера.
Отправка запроса на выход
Чтобы выйти из пользователя, выполните обе следующие операции:
- Перенаправьте ПОЛЬЗОВАТЕЛЬСКИЙ агент пользователя в URI выхода платформа удостоверений Майкрософт.
- Снимите файлы cookie приложения или завершите сеанс пользователя в приложении.
Если вы не выполнили ни один из этих операций, пользователь может оставаться прошедшим проверку подлинности и не будет предложено войти в систему при следующем использовании приложения.
Перенаправьте агент пользователя в end_session_endpoint
, как показано в документе конфигурации OpenID Connect. end_session_endpoint
поддерживает HTTP-запросы GET и POST.
GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?
post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
Параметр | Условие | Description |
---|---|---|
post_logout_redirect_uri |
Рекомендуется | URL-адрес, на который пользователя следует перенаправить после успешного выхода. Если параметр не включен, пользователь увидит общее сообщение, созданное платформой удостоверений Майкрософт. URL-адрес должен в точности соответствовать одному из универсальных кодов ресурсов (URI) перенаправления, зарегистрированных для приложения на портале регистрации приложений. |
logout_hint |
Необязательно | Включает выход без запроса на выбор учетной записи пользователя. Чтобы использоватьlogout_hint , включите необязательное login_hint утверждение в клиентском приложении и используйте значение необязательного login_hint утверждения в качестве logout_hint параметра. Не используйте имена участников-пользователей или номера телефонов в качестве значения параметра logout_hint . |
Примечание.
После успешного выхода активные сеансы будут заданы как неактивные. Если для пользователя, выполнившего вход, существует действительный маркер первичного обновления (PRT), и выполняется новый вход, единый вход будет прерван, и пользователь увидит запрос с помощью средства выбора учетной записи. Если выбран параметр подключенной учетной записи, которая ссылается на PRT, вход будет выполняться автоматически без необходимости вставки новых учетных данных.
Единый выход
При перенаправлении пользователя end_session_endpoint
в приложение платформа удостоверений Майкрософт завершает сеанс пользователя для этого приложения. Однако пользователь может войти в другие приложения, использующие те же учетные записи Майкрософт для проверки подлинности.
Когда пользователь вошел в несколько веб-приложений или SPA, зарегистрированных в этом каталоге (также известном как клиент), этот пользователь может мгновенно выйти из всех приложений, выполнив вход в одном из приложений.
Чтобы включить единый выход для приложения Entra, следует использовать функцию выхода внешнего канала OpenID Connect. Эта функция позволяет приложению уведомлять другие приложения о том, что пользователь вышел из системы. Когда пользователь выходит из одного приложения, платформа удостоверений Майкрософт отправляет HTTP-запрос GET на URL-адрес выхода внешнего канала каждого приложения, в которое в настоящее время входит пользователь.
Эти приложения должны отвечать на этот запрос, выполнив следующие два действия, чтобы единый выход был успешным:
- Снимите любой сеанс, который идентифицирует пользователя.
- Приложения должны ответить на него, удалив любой сеанс, который идентифицирует пользователя, и возвратив ответ
200
.
Что такое URL-адрес выхода внешнего канала?
URL-адрес выхода внешнего канала — это место, в котором веб-приложение или spa получает запрос на выход с сервера проверки подлинности Entra и выполняет функции единого выхода. У каждого приложения есть один URL-адрес выхода внешнего канала.
Когда следует задать URL-адрес выхода внешнего канала?
Если для приложения требуется единый выход или разработчик, необходимо задать URL-адрес выхода переднего канала для регистрации приложения. После установки URL-адреса выхода из внешнего канала для регистрации приложения платформа удостоверений Майкрософт отправляет HTTP-запрос GET на URL-адрес выхода из этого приложения, когда пользователь вошел в систему из другого приложения.
Настройка единого выхода с помощью функции выхода внешнего канала
Чтобы использовать функцию выхода переднего канала для набора приложений, необходимо выполнить следующие две задачи:
- Задайте URL-адрес выхода переднего канала в Центре администрирования Microsoft Entra для всех приложений, которые должны быть выходить одновременно. Каждое приложение обычно имеет собственный URL-адрес выхода внешнего канала.
- Измените код приложений таким образом, чтобы они прослушивали HTTP-запрос GET, отправленный платформа удостоверений Майкрософт в URL-адрес выхода внешнего канала, и отвечайте на этот запрос, очищая любой сеанс, который идентифицирует пользователя и возвращает ответ 200.
Выбор URL-адреса выхода внешнего канала
URL-адрес выхода переднего канала должен быть URL-адресом, который может получать и отвечать на HTTP-запросы GET и должен иметь возможность очистить любой сеанс, который идентифицирует пользователя. Примеры URL-адреса выхода внешнего канала могут быть, но не ограничены следующими:
Следующие шаги
- Просмотрите документацию по конечной точке UserInfo.
- Настройка утверждений в маркере с помощью данных из локальных систем.
- Включение собственных утверждений в маркеры.