Поделиться через


Веб-вход с помощью OpenID Connect в Azure Active Directory B2C

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

OpenID Connect — это протокол проверки подлинности, созданный на основе OAuth 2.0, который можно использовать для безопасного входа пользователей в веб-приложения. С помощью реализации OpenID Connect Azure Active Directory B2C (Azure AD B2C) вы можете аутсорсинг регистрации, входа и других возможностей управления удостоверениями в веб-приложениях в Идентификатор Microsoft Entra. В этом руководстве показано, как это сделать независимо от языка. В нем описывается, как отправлять и получать HTTP-сообщения без использования любой из наших библиотек с открытым исходным кодом.

Примечание.

Большинство библиотек аутентификации с открытым исходным кодом получают и проверяют JWT (JSON Web Tokens) для вашего приложения. Мы рекомендуем изучить эти параметры, а не реализовать собственный код. Дополнительные сведения см. в разделе "Общие сведения о библиотеке проверки подлинности Майкрософт (MSAL)" и библиотеке веб-проверки подлинности Microsoft Identity Web.

OpenID Connect расширяет протокол авторизации OAuth 2.0 для использования в качестве протокола проверки подлинности . Этот протокол проверки подлинности позволяет выполнять единый вход. В ней представлена концепция маркера идентификатора, которая позволяет клиенту проверять личность пользователя и получать основные сведения о профиле пользователя.

OpenID Connect также позволяет приложениям безопасно получать маркеры доступа. Маркеры доступа можно использовать для доступа к ресурсам, защищенным сервером авторизации . Мы рекомендуем Использовать OpenID Connect, если вы создаете веб-приложение, размещенное на сервере, и обращаетесь через браузер. Дополнительные сведения о токенах см. в статье "Обзор токенов в Azure Active Directory B2C"

Azure AD B2C расширяет стандартный протокол OpenID Connect для выполнения более простой проверки подлинности и авторизации. В нем представлен параметр потока пользователя, который позволяет использовать OpenID Connect для добавления возможностей пользователей в приложение, таких как регистрация, вход и управление профилями.

Отправка запросов проверки подлинности

Когда веб-приложение должно пройти проверку подлинности пользователя и запустить поток пользователя, он может направить пользователя в конечную точку /authorize . Пользователь принимает меры в зависимости от потока пользователя.

В этом запросе клиент указывает разрешения, которые необходимо получить от пользователя, в параметре scope, и задает пользовательский поток для запуска. Чтобы получить представление о том, как работает запрос, вставьте запрос в браузер и запустите его. Замените:

  • {tenant} с именем арендатора.
  • 00001111-aaaa-2222-bbbb-3333cccc4444 с идентификатором приложения, зарегистрированного в арендаторе.
  • {application-id-uri}/{scope-name} с URI идентификатора приложения и областью действия приложения, зарегистрированного в вашей организации.
  • {policy} с именем политики, которое у вас есть в вашем тенанте, например b2c_1_sign_in.
GET /{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/authorize?
Host: {tenant}.b2clogin.com

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&response_type=code+id_token
&redirect_uri=https%3A%2F%2Fjwt.ms%2F
&response_mode=fragment
&scope=openid%20offline_access%20{application-id-uri}/{scope-name}
&state=arbitrary_data_you_can_receive_in_the_response
&nonce=12345
Параметр Обязательно Описание
{арендатор} Да Имя клиента Azure AD B2C. Если вы используете пользовательский домен, замените tenant.b2clogin.com вашим доменом, например fabrikam.com.
{политика} Да Поток пользователя или политика, запущенная приложением. Укажите имя потока пользователя, создаваемого в клиенте Azure AD B2C. Например: b2c_1_sign_in, b2c_1_sign_up, или b2c_1_edit_profile.
идентификатор клиента Да Идентификатор приложения, который портал Azure назначил вашему приложению.
данный случай Рекомендуется Значение, включенное в запрос (созданное приложением), которое включается в полученный маркер идентификатора в качестве утверждения. Затем приложение может проверить это значение, чтобы предотвратить атаки воспроизведения токенов. Значение обычно является случайной уникальной строкой, которую можно использовать для идентификации источника запроса.
тип_ответа Да Должен включать токен идентификатора для OpenID Connect. Если веб-приложение также требует маркеров для вызова веб-API, можно использовать code+id_token.
охват Да Список областей, разделённый пробелами. Область openid указывает разрешение на вход пользователя и получение данных о пользователе в виде маркеров идентификатора. Область offline_access является необязательной для веб-приложений. Оно указывает, что приложению нужен маркер обновления для расширенного доступа к ресурсам. https://{tenant-name}/{app-id-uri}/{scope} обозначает разрешение на доступ к защищенным ресурсам, таким как веб-API. Дополнительные сведения см. в разделе "Запрос токена доступа".
подсказка нет Тип необходимого взаимодействия с пользователем. Единственное допустимое значение в настоящее время — это login, которое заставляет пользователя вводить свои учетные данные при этом запросе.
redirect_uri (URI перенаправления) Да Параметр redirect_uri приложения, где сервер отправляет ответы проверки подлинности приложению. Он должен точно соответствовать одному из redirect_uri параметров, зарегистрированных на портале Azure, за исключением того, что он должен быть закодирован URL-адресом.
режим_ответа нет Метод, используемый для отправки полученного кода авторизации в приложение. Это может быть либо query, form_postлибо fragment. Мы рекомендуем использовать режим отклика form_post для обеспечения наилучшей безопасности.
государство нет Значение, которое можно включить в запрос и которое возвращается сервером авторизации в ответе с токеном. Это может быть строка любого нужного содержимого. Как правило, для предотвращения подделки межсайтовых запросовиспользуется генерируемое случайным образом уникальное значение. Состояние также используется для кодирования сведений о состоянии пользователя в приложении до возникновения запроса проверки подлинности, например страницы, на которой они находились. Если вы не хотите зарегистрировать несколько URL-адресов перенаправления на портале Azure, можно использовать state параметр для отличия ответов в приложении от службы Azure AD B2C из-за различных запросов.
подсказка для входа нет Можно использовать для предварительного заполнения поля имени входа на странице входа. Дополнительные сведения см. в статье о предварительном заполнении имени входа.
подсказка_домена нет Предоставляет подсказку Azure AD B2C о социальном провайдере удостоверений, который следует использовать для входа в систему. Если указано корректное значение, пользователь переходит прямо на страницу входа поставщика удостоверений. Для получения дополнительных сведений см. Перенаправление входа к социальному провайдеру.
Пользовательские параметры нет Настраиваемые параметры, которые можно использовать с настраиваемыми политиками. Например, динамический URI пользовательского содержимого страницы или сопоставители утверждений с ключом-значением.

На этом этапе пользователю предлагается завершить рабочий процесс. Пользователю может потребоваться ввести имя пользователя и пароль, войти с помощью социального удостоверения или зарегистрироваться в каталоге. В зависимости от того, как определяется поток пользователя, может быть любое другое количество шагов.

После завершения потока пользователя ответ возвращается в приложение по указанному redirect_uri параметру с помощью метода, указанного в параметре response_mode . Ответ одинаков для каждого из предыдущих случаев, независимо от потока пользователя.

Успешный ответ с использованием response_mode=fragment будет выглядеть так:

GET https://jwt.ms/#
id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&state=arbitrary_data_you_can_receive_in_the_response
Параметр Описание
идентификационный_токен Маркер идентификатора, запрошенный приложением. Вы можете использовать маркер идентификации для проверки личности пользователя и запуска сеанса пользователя.
код Код авторизации, запрошенный приложением, если вы использовали response_type=code+id_token. Приложение может использовать код авторизации для запроса токена доступа к целевому ресурсу. Коды авторизации обычно истекают примерно через 10 минут.
государство Если запрос содержит параметр state, то в ответе должно отображаться то же значение. Приложение должно убедиться, что state значения в запросе и ответе идентичны.

Ответы на ошибки также можно отправить в redirect_uri параметр, чтобы приложение соответствующих способов их обработки:

GET https://jwt.ms/#
error=access_denied
&error_description=AADB2C90091%3a+The+user+has+cancelled+entering+self-asserted+information.%0d%0aCorrelation+ID%3a+xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx%0d%0aTimestamp%3a+xxxx-xx-xx+xx%3a23%3a27Z%0d%0a
&state=arbitrary_data_you_can_receive_in_the_response
Параметр Описание
ошибка Код, который можно использовать для классификации типов возникающих ошибок.
описание ошибки Определенное сообщение об ошибке, которое может помочь определить первопричину ошибки проверки подлинности.
государство Если запрос содержит параметр state, то в ответе должно отображаться то же значение. Приложение должно убедиться, что state значения в запросе и ответе идентичны.

Проверка маркера идентификации

Просто получение идентификационного токена недостаточно для аутентификации пользователя. Проверьте подпись токена ID и убедитесь в достоверности утверждений в токене согласно требованиям вашего приложения. Azure AD B2C использует веб-маркеры JSON (JWTs) и криптографию открытого ключа для подписывания маркеров и проверки их допустимости.

Примечание.

Большинство библиотек аутентификации с открытым исходным кодом выполняют проверку JWT для вашего приложения. Мы рекомендуем изучить эти параметры, а не реализовать собственную логику проверки. Дополнительные сведения см. в разделе "Общие сведения о библиотеке проверки подлинности Майкрософт (MSAL)" и библиотеке веб-проверки подлинности Microsoft Identity Web.

Azure AD B2C имеет конечную точку метаданных OpenID Connect, которая позволяет приложению получать сведения о Azure AD B2C во время выполнения. Эта информация включает точки подключения, содержимое токенов и ключи подписи токенов. Существует документ метаданных JSON для каждого потока пользователя в клиенте B2C. Например, документ метаданных для пользовательского потока b2c_1_sign_in в fabrikamb2c.onmicrosoft.com находится по адресу:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/v2.0/.well-known/openid-configuration

Одним из свойств этого документа конфигурации является jwks_uri, значение которого для одного и того же потока пользователя будет следующим:

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_sign_in/discovery/v2.0/keys

Чтобы определить, какой поток пользователя использовался для выдачи токена идентификатора, у вас есть два варианта. Во-первых, имя потока пользователя включено в утверждение acr в токене идентификатора, см. утверждение, представляющее поток пользователя. Другой вариант — кодировать поток пользователя в значении state параметра при выполнении запроса, а затем декодировать его, чтобы определить, какой поток пользователя использовался. Любой метод является допустимым.

После получения документа метаданных из конечной точки метаданных OpenID Connect, можно использовать открытые ключи RSA 256 для проверки подписи токена удостоверения. На этой конечной точке может быть указано несколько ключей, каждый из которых подтверждается утверждением kid. Заголовок токена идентификатора также содержит kid утверждение, указывающее, какой из этих ключей использовался для подписи токена идентификатора.

Чтобы проверить маркеры из Azure AD B2C, необходимо создать открытый ключ с помощью экспоненты (e) и modulus(n). Для этого необходимо узнать, как создать открытый ключ на выбранном языке программирования. Официальная документация по созданию открытого ключа с протоколом RSA см. здесь: https://tools.ietf.org/html/rfc3447#section-3.1

После проверки подписи токена идентификатора необходимо верифицировать различные утверждения. Например:

  • Валидируйте утверждение nonce, чтобы предотвратить атаки повторного воспроизведения токенов. Его значение должно быть тем, что вы указали в запросе на вход.
  • aud Проверьте корректность утверждения, чтобы убедиться, что токен идентификации был выдан для вашего приложения. Его значение должно быть идентификатором вашего приложения.
  • Проверьте утверждения iat и exp, чтобы убедиться, что токен идентификатора не истек.

Существует также несколько дополнительных проверок, которые необходимо выполнить. Проверки подробно описаны в спецификации OpenID Connect Core. Также может потребоваться проверить больше утверждений в зависимости от вашего сценария. Ниже приведены некоторые распространенные проверки:

  • Убедитесь, что пользователь или организация зарегистрировались в приложении.
  • Убедитесь, что у пользователя есть правильная авторизация или привилегии.
  • Убедитесь, что осуществлён определенный уровень аутентификации, например, многофакторная аутентификация Microsoft Entra.

После проверки подлинности маркера идентификатора можно начать сеанс с пользователем. Вы можете использовать утверждения в токене ID для получения сведений о пользователе в вашем приложении. Эти сведения используются для отображения, записей и авторизации.

Получите маркер

Если вам нужно, чтобы веб-приложение выполняло только потоки пользователей, можно пропустить следующие несколько разделов. Эти разделы применимы только к веб-приложениям, которые должны выполнять прошедшие проверку подлинности вызовы к веб-API, который защищен самим Azure AD B2C.

Вы можете активировать код авторизации, полученный (с помощью response_type=code+id_token) для маркера для требуемого ресурса, отправив запрос POST на конечную точку /token. В Azure AD B2C можно запросить маркеры доступа для других API как обычно, указав их области в запросе.

Вы также можете запросить маркер доступа для собственного внутреннего веб-API приложения. В этом случае идентификатор клиента приложения используется как запрашиваемая область действия, что приводит к токену доступа с этим идентификатором клиента в роли "аудитории".

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=00001111-aaaa-2222-bbbb-3333cccc4444 offline_access
&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
Параметр Обязательно Описание
{арендатор} Да Имя клиента Azure AD B2C
{политика} Да Поток пользователя, используемый для получения кода авторизации. В этом запросе нельзя использовать другой поток пользователя. Добавьте этот параметр в строку запроса, а не в текст POST.
идентификатор клиента Да Идентификатор приложения, который портал Azure назначил вашему приложению.
секрет_клиента Да, в веб-приложениях Секрет приложения, созданный на портале Azure. Секреты клиента используются в этом потоке для сценариев веб-приложения, где клиент может безопасно хранить секрет клиента. В сценариях нативного приложения (общедоступного клиента) секреты клиента не могут быть безопасно сохранены, поэтому не используются в данном случае. При использовании секрета клиента периодически изменяйте его.
код Да Код авторизации, полученный в начале процесса взаимодействия с пользователем.
тип предоставления Да Тип предоставления, который должен быть authorization_code для потока кода авторизации.
redirect_uri (URI перенаправления) нет redirect_uri Параметр приложения, в котором вы получили код авторизации.
охват нет Список областей, разделённый пробелами. Область openid указывает разрешение на вход пользователя и получение данных о пользователе в виде параметров id_token. Его можно использовать для получения токенов в собственное серверное веб-API вашего приложения, которое имеет тот же идентификатор приложения, что и клиент. Область offline_access указывает, что приложению требуется маркер обновления для расширенного доступа к ресурсам.

Успешный ответ токена выглядит следующим образом:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "00001111-aaaa-2222-bbbb-3333cccc4444 offline_access",
    "expires_in": "3600",
    "expires_on": "1644254945",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
}
Параметр Описание
не ранее Время эпохи, когда токен становится допустимым.
тип токена Значение типа токена. Bearer — единственный поддерживаемый тип.
маркер доступа (access_token) Подписанный JWT, запрошенный вами.
охват Допустимые области действия для токена.
срок действия истечет через Срок действия маркера доступа (в секундах).
срок действия истекает Время, когда токен доступа становится недействительным.
рефреш_токен Токен обновления OAuth 2.0. Приложение может использовать этот маркер для получения дополнительных маркеров после истечения срока действия текущего маркера. Маркеры обновления можно использовать для поддержания доступа к ресурсам в течение длительного периода времени. offline_access Область должна была использоваться как в запросах авторизации, так и в запросах токена, чтобы получить токен обновления.

Ответы на ошибки выглядят следующим образом:

{
    "error": "invalid_grant",
    "error_description": "AADB2C90080: The provided grant has expired. Please re-authenticate and try again. Current time: xxxxxxxxxx, Grant issued time: xxxxxxxxxx, Grant expiration time: xxxxxxxxxx\r\nCorrelation ID: xxxxxxxx-xxxx-xxxX-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-16 xx:10:52Z\r\n"
}
Параметр Описание
ошибка Код, который можно использовать для классификации типов ошибок, возникающих.
описание ошибки Сообщение, которое может помочь определить первопричину ошибки проверки подлинности.

Используйте маркер

После успешного получения токена доступа, вы можете использовать данный токен в запросах к вашим серверным веб-API, включив токен в Authorization заголовок.

GET /tasks
Host: mytaskwebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...

Обновите токен

Токены доступа и идентификационные токены являются кратковременными. После истечения срока их действия необходимо обновить, чтобы продолжить доступ к ресурсам. При обновлении маркера доступа Azure AD B2C возвращает новый маркер. Обновленный маркер доступа будет иметь обновленные значения утверждений: nbf (не раньше), iat (время выдачи) и exp (срок действия). Все остальные значения заявлений похожи на значения в предыдущем токене доступа.

Обновите токен, отправив другой POST запрос на конечную точку /token. На этот раз укажите refresh_token параметр вместо code параметра:

POST https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/token HTTP/1.1
Host: {tenant}.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=openid offline_access
&refresh_token=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq...
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
Параметр Обязательно Описание
{арендатор} Да Имя клиента Azure AD B2C
{политика} Да Пользовательский поток, использованный для получения основного токена обновления. В этом запросе нельзя использовать другой поток пользователя. Добавьте этот параметр в строку запроса, а не в текст POST.
идентификатор клиента Да Идентификатор приложения, который портал Azure назначил вашему приложению.
секрет_клиента Да, в веб-приложениях Секрет приложения, созданный на портале Azure. Секреты клиента используются в этом потоке для сценариев веб-приложения, где клиент может безопасно хранить секрет клиента. В сценариях нативных приложений (общедоступные клиенты) клиентские секреты не могут быть безопасно сохранены, поэтому не используются в этом вызове. При использовании секрета клиента измените его периодически.
тип предоставления Да Тип предоставления, который должен быть refresh_token для этой части потока кода авторизации.
рефреш_токен Да Исходный маркер обновления, полученный во второй части потока. Область offline_access должна использоваться как в запросах авторизации, так и в запросах токенов, чтобы получить токен обновления.
redirect_uri (URI перенаправления) нет redirect_uri Параметр приложения, в котором вы получили код авторизации.
охват нет Список областей, разделённый пробелами. Область openid указывает разрешение на вход пользователя и получение данных о пользователе в виде маркеров идентификатора. Его можно использовать для отправки токенов в собственный веб-API приложения, представленный тем же идентификатором приложения, что и клиент. Область offline_access указывает, что приложению требуется маркер обновления для расширенного доступа к ресурсам.

Успешный ответ токена выглядит следующим образом:

{
    "not_before": "1442340812",
    "token_type": "Bearer",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "scope": "00001111-aaaa-2222-bbbb-3333cccc4444 offline_access",
    "expires_in": "3600",
    "refresh_token": "AAQfQmvuDy8WtUv-sd0TBwWVQs1rC-Lfxa_NDkLqpg50Cxp5Dxj0VPF1mx2Z...",
    "refresh_token_expires_in": "1209600"
}
Параметр Описание
не ранее Время эпохи, когда токен становится допустимым.
тип токена Значение типа токена. Bearer — единственный поддерживаемый тип.
маркер доступа (access_token) Запрошенный подписанный токен JWT.
охват Допустимые области действия для токена.
срок действия истечет через Срок действия маркера доступа (в секундах).
рефреш_токен Токен обновления OAuth 2.0. Приложение может использовать этот маркер для получения дополнительных маркеров после истечения срока действия текущего маркера. Маркеры обновления можно использовать для поддержания доступа к ресурсам в течение длительного периода времени.
время_истечения_refresh_токена Срок действия маркера обновления (в секундах).

Ответы на ошибки выглядят следующим образом:

{
    "error": "invalid_grant",
    "error_description": "AADB2C90129: The provided grant has been revoked. Please reauthenticate and try again.\r\nCorrelation ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r\nTimestamp: xxxx-xx-xx xx:xx:xxZ\r\n",
}
Параметр Описание
ошибка Код, который можно использовать для классификации типов ошибок, возникающих.
описание ошибки Сообщение, которое может помочь определить первопричину ошибки проверки подлинности.

Отправка запроса на выход

Если вы хотите выйти из приложения, недостаточно просто очистить файлы cookie приложения или завершить сеанс с пользователем. Перенаправьте пользователя в Azure AD B2C для выхода. Если вы не сделали этого, пользователь может повторно пройти проверку подлинности в приложении, не вводя учетные данные еще раз. Дополнительные сведения см. в статье о поведении сеанса Azure AD B2C.

Чтобы выйти из учетной записи пользователя, перенаправьте пользователя по адресу, указанному в документе метаданных OpenID Connect, описанном ранее.

GET https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{policy}/oauth2/v2.0/logout?post_logout_redirect_uri=https%3A%2F%2Fjwt.ms%2F
Параметр Обязательно Описание
{арендатор} Да Имя клиента Azure AD B2C. Если вы используете пользовательский домен, замените tenant.b2clogin.com вашим доменом, например fabrikam.com.
{политика} Да Поток пользователя, указанный в запросе авторизации. Например, если пользователь вошел с помощью b2c_1_sign_in пользовательского потока, укажите b2c_1_sign_in в запросе на выход.
Подсказка_токена_идентификатора нет Ранее выданный токен идентификатора, который необходимо передать в конечную точку выхода из системы в качестве подсказки о текущем аутентифицированном сеансе конечного пользователя с клиентом. id_token_hint удостоверяет, что post_logout_redirect_uri является зарегистрированным URL-адресом ответа в параметрах приложения Azure AD B2C. Для получения дополнительной информации см. раздел Защита перенаправления при выходе из системы.
идентификатор клиента Нет* Идентификатор приложения, который портал Azure назначил вашему приложению.

* Это требуется при использовании Application конфигурации SSO изоляции и если опция Require ID Token в запросе на Noвыход установлена.
URI перенаправления после выхода из системы нет URL-адрес, на который пользователь должен быть перенаправлен после успешного выхода. Если он не включен, Azure AD B2C отображает пользователю универсальное сообщение. Если вы не предоставите например, id_token_hint, этот URL-адрес не следует регистрировать в качестве URL-адреса ответа в параметрах приложения Azure AD B2C.
государство нет Если включить state параметр в запрос авторизации, сервер авторизации возвращает то же значение в ответе post_logout_redirect_uri. Приложение должно проверить, что значение state в запросе и в ответе идентично.

При запросе на выход Azure AD B2C аннулирует сеанс на основе файлов cookie Azure AD B2C и пытается выйти из систем федеративных поставщиков удостоверений. Дополнительные сведения см. в разделе "Единый выход".

Обезопасьте перенаправление после выхода

После выхода пользователь перенаправляется в URI, указанный в параметре post_logout_redirect_uri , независимо от URL-адресов ответа, указанных для приложения. Однако если действительный id_token_hint передается, а маркер запрашиваемого идентификатора в запросах выхода включен, Azure AD B2C проверяет, соответствует ли значение post_logout_redirect_uri одного из настроенных URI перенаправления приложения перед выполнением перенаправления. Если для приложения не настроен соответствующий URL-адрес ответа, отображается сообщение об ошибке и пользователь не перенаправляется.

Чтобы задать требуемый маркер идентификатора в запросах на выход, см. статью "Настройка поведения сеанса в Azure Active Directory B2C".