Ограничения для URI перенаправления (URL-адресов ответа)
URI перенаправления, или URL-адрес ответа, — это расположение, в которое сервер авторизации будет отправлять пользователя после успешной авторизации приложения и которому был предоставлен код авторизации или маркер доступа. Сервер авторизации отправляет код или токен в URI перенаправления, поэтому важно зарегистрировать правильное расположение в рамках процесса регистрации приложения.
Модель приложения Microsoft Entra указывает эти ограничения для перенаправления URI:
URI перенаправления должен начинаться со схемы
https
. Существуют некоторые исключения для URI перенаправления localhost.URI перенаправления чувствительны к регистру и должны соответствовать регистру URL-пути выполняемого приложения. Например, если приложение включает в состав своего пути
.../abc/response-oidc
, не указывайте.../ABC/response-oidc
в URI перенаправления. Так как веб-браузер обрабатывает пути с учетом регистра, файлы cookie, связанные с.../abc/response-oidc
, могут быть исключены при перенаправлении на не совпадающий по регистру знаков URL-адрес.../ABC/response-oidc
.URI перенаправления без сегмента пути возвращаются с замыкающей косой чертой (
/
) в ответе. Это применимо только в том случае, если режим ответа имеет значениеquery
илиfragment
.Примеры:
https://contoso.com
возвращается в видеhttps://contoso.com/
http://localhost:7071
возвращается в видеhttp://localhost:7071/
К URI перенаправления, содержащих сегмент пути, не добавляется замыкающая косая черта в ответе.
Примеры:
https://contoso.com/abc
возвращается в видеhttps://contoso.com/abc
https://contoso.com/abc/response-oidc
возвращается в видеhttps://contoso.com/abc/response-oidc
URI перенаправления не поддерживают специальные символы.
! $ ' ( ) , ;
Максимальное число URI перенаправления
В этой таблице указано максимальное число URI перенаправления, которые можно добавить для зарегистрированного приложения на платформе удостоверений Майкрософт.
Учетные записи для входа | Максимальное число URI перенаправления | Description |
---|---|---|
Рабочие или учебные учетные записи Майкрософт в клиенте Microsoft Entra любой организации | 256 | Для поля signInAudience в манифесте приложения установлено AzureADMyOrg или AzureADMultipleOrgs |
Личные учетные записи Майкрософт и рабочие и учебные учетные записи | 100 | Для поля signInAudience в манифесте приложения установлено AzureADandPersonalMicrosoftAccount |
Максимальное количество URI перенаправления невозможно вызвать по соображениям безопасности. Если вам требуется большее число URI перенаправления, используйте следующую схему с параметром состояния в качестве решения.
Максимальная длина URI
Длина каждого URI перенаправления, добавляемого для зарегистрированного приложения, должна составлять не более 256 символов.
Перенаправление URI в главных объектах приложений и субъектов-служб
- Всегда добавляйте URI перенаправления только к объекту приложения.
- Не добавляйте значения URI перенаправления к субъекту-службе, так как эти значения могут быть удалены при синхронизации объекта субъекта-службы с объектом приложения. Это может произойти из-за любой операции обновления, которая запускает синхронизацию между двумя объектами.
Поддержка параметров запроса в URI перенаправления
Параметры запроса разрешены в URI перенаправления для приложений, которые выполняют вход только с помощью рабочих или учебных учетных записей.
Параметры запроса запрещены в URI перенаправления для регистрации приложений, настроенных для входа пользователей с помощью личных учетных записей Майкрософт, таких как Outlook.com (Hotmail), Messenger, OneDrive, MSN, Xbox Live или Microsoft 365.
Аудитория входа в систему регистрации приложений | Поддерживает параметры запроса в URI перенаправления |
---|---|
Учетные записи только в этом каталоге организации (только Contoso — один арендатор) | |
Учетные записи в любом каталоге организации (любой каталог Microsoft Entra — с несколькими клиентами) | |
Учетные записи в любом каталоге организации (любой каталог Microsoft Entra — Multitenant) и личных учетных записей Майкрософт (например, Skype, Xbox) | |
Только личные учетные записи Майкрософт |
Поддерживаемые схемы
HTTPS: схема HTTPS (https://
) поддерживается для всех URI перенаправления на базе протокола HTTP.
HTTP: схема HTTP (http://
) поддерживается только для URI перенаправления localhost и используется исключительно на этапах локальной разработки и тестирования приложения.
Пример URI перенаправления | Срок действия |
---|---|
https://contoso.com |
Действительно |
https://contoso.com/abc/response-oidc |
Действительно |
https://localhost |
Действительно |
http://contoso.com/abc/response-oidc |
Недопустимо |
http://localhost |
Действительно |
http://localhost/abc |
Действительно |
Исключения для localhost
В соответствии с разделами RFC 8252 8.3 и 7.3, для URI перенаправления с замыканием на себя (localhost) действуют два особых правила:
- Схемы URI
http
допустимы, поскольку перенаправление никогда не покидает устройство. Таким образом, оба этих URI допустимы:http://localhost/myApp
https://localhost/myApp
- Из-за временного характера диапазонов портов, часто используемых собственными приложениями, компонент порта (например,
:5001
или:443
) при сопоставлении URI перенаправления игнорируется. В результате все эти URI считаются эквивалентными:http://localhost/MyApp
http://localhost:1234/MyApp
http://localhost:5000/MyApp
http://localhost:8080/MyApp
С точки зрения разработки это означает несколько моментов:
Не регистрируйте несколько URI перенаправления, если в них различается только порт. Сервер входа будет произвольным образом выбирать один из них и использовать связанные с этим URI параметры (например, в зависимости от того, относится ли это перенаправление к типу
web
,native
, илиspa
).Это особенно важно, если вы планируете использовать в одном зарегистрированном приложении разные потоки проверки подлинности (например, и выдачу кода авторизации, и неявный поток). Чтобы связать с каждым URI перенаправления правильные параметры ответа, сервер входа должен иметь возможность различать эти URI, что невозможно, если различается только порт.
Чтобы зарегистрировать несколько URI перенаправления по адресу localhost для тестирования различных потоков в процессе разработки, используйте для них разный компонент пути. Например,
http://localhost/MyWebApp
не эквивалентноhttp://localhost/MyNativeApp
.IPv6-адрес замыкания на себя (
[::1]
) в настоящее время не поддерживается.
Выбор 127.0.0.1 вместо localhost
Чтобы работу приложения не нарушали неправильно настроенные брандмауэры или переименованные сетевые интерфейсы, используйте в URI перенаправления IP-адрес замыкания на себя в виде localhost
вместо 127.0.0.1
. Например, https://127.0.0.1
.
При этом текстовое поле URI перенаправления на портал Azure нельзя использовать для добавления URI замыкания на себя со схемой http
:
Чтобы добавить URI перенаправления, использующий схему http
с 127.0.0.1
-адресом замыкания на себя, в настоящее время необходимо изменить атрибут replyUrlsWithType в манифесте приложения.
Ограничения на подстановочные знаки в URI перенаправления
URI с подстановочными знаками, такие как https://*.contoso.com
, кажутся удобными, но их следует избегать из-за проблем с безопасностью. Согласно спецификации OAuth 2.0 (раздел 3.1.2 RFC 6749), URI конечной точки перенаправления должен быть абсолютным. Таким образом, если настроенный дикий карта URI соответствует URI перенаправления, строки запроса и фрагменты в URI перенаправления удаляются.
URI с подстановочными знаками в настоящее время не поддерживаются для зарегистрированных приложений, настроенных для входа как в личные, так и в рабочие и учебные учетные записи Майкрософт. Однако для приложений, настроенных для входа только рабочих или учебных учетных записей в клиенте Microsoft Entra организации, разрешены URI карта.
Чтобы добавить URI перенаправления с подстановочными знаками для зарегистрированных приложений, которые входят в рабочие или учебные учетные записи, используйте редактор манифеста приложения в разделе Регистрация приложений на портале Azure. Хотя с помощью редактора манифеста действительно можно задать URI перенаправления с подстановочными знаками, мы настоятельно рекомендуем придерживаться требований раздела 3.1.2 RFC 6749 и использовать только абсолютные URI.
Если вам требуется больше URI перенаправления, чем разрешено, вместо подстановочных знаков вы можете воспользоваться следующей схемой с параметром состояния.
Использование параметра состояния
Если у вас есть несколько поддоменов и вам необходимо после успешной проверки подлинности перенаправлять пользователей на ту же страницу, с которой они начали, можно использовать параметр состояния.
Если вы используете этот подход:
- Создайте "общий" URI перенаправления для каждого приложения, чтобы обрабатывать маркеры безопасности, полученные от конечной точки авторизации.
- Приложение может отсылать параметры, зависящие от приложения (например, URL-адрес поддомена, откуда перешел пользователь, или настройки фирменного оформления), в параметр состояния. При использовании параметра состояния защита ОТ CSRF, как указано в разделе 10.12 RFC 6749.
- Параметры, зависящие от приложения, будут включать всю информацию, необходимую приложению для корректного отображения для пользователя, то есть для создания соответствующего состояния приложения. Конечная точка авторизации Microsoft Entra полосирует HTML из параметра состояния, поэтому убедитесь, что вы не передаете HTML-содержимое в этом параметре.
- Когда идентификатор Microsoft Entra отправляет ответ на универсальный код ресурса (URI) перенаправления "shared", он отправит параметр состояния обратно в приложение.
- Затем приложение может использовать значение в параметре состояния, чтобы определить URL-адрес для отправки пользователю. Убедитесь, что вы проверили защиту CSRF.
Предупреждение
Такой подход позволяет скомпрометированному клиенту изменять дополнительные параметры, отправляемые в параметре состояния, поэтому пользователь перенаправляется на другой URL-адрес, что является угрозой открытого перенаправления, как описано в стандарте RFC 6819. Таким образом, клиент должен защищать эти параметры, шифруя состояние или проверяя его с помощью других средств, таких как проверка доменного имени в URI перенаправления по маркеру.
Следующие шаги
Узнайте о манифесте регистрации приложения.