Подключение личных доменов в Azure Active Directory B2C

Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.

В этой статье описывается, как включить личные домены в URL-адреса перенаправления для Azure Active Directory B2C (Azure AD B2C). Используя проверенный личный домен, вы можете воспользоваться такими преимуществами, как:

  • Он обеспечивает более простой пользовательский интерфейс. Пользователь считает, что во время входа он остается в вашем домене, а не перенаправляется на домен Azure AD B2C по умолчанию <tenant-name>.b2clogin.com.

  • Оставаясь в том же домене для приложения во время входа, вы снижаете влияние блокировки сторонних файлов cookie.

  • Вы увеличиваете количество объектов (учетных записей пользователей и приложений), которые можно создать в клиенте Azure AD B2C с 1,25 миллиона до 5,25 миллиона.

Screenshot demonstrates an Azure AD B2C custom domain user experience.

Общие сведения о личных доменах

Подключение личных доменов в Azure AD B2C выполняется с помощью Azure Front Door. Azure Front Door — это глобальная точка входа, которая использует глобальную промежуточную подсеть Майкрософт для создания быстрых, безопасных и масштабируемых веб-приложений. Можно преобразовать содержимое Azure AD B2C за точкой входа Azure Front Door, а затем настроить параметры Azure Front Door так, чтобы содержимое было доступно через личный домен в URL-адресе приложения.

Просмотрите это видео, чтобы узнать о личном домене Azure AD B2C.

На следующей схеме показана интеграция с Azure Front Door.

  1. В приложении пользователь нажимает кнопку входа для перехода на страницу входа в Azure AD B2C. На этой странице указывается личное доменное имя.
  2. Веб-браузер преобразует личное доменное имя в IP-адрес Azure Front Door. В ходе DNS-преобразования запись канонического имени (CNAME) вместе с личным доменным именем указывает на узел пользовательского интерфейса по умолчанию во Front Door (например, contoso-frontend.azurefd.net).
  3. Трафик, адресованный личному домену (например, login.contoso.com), направляется на указанный узел пользовательского интерфейса по умолчанию во Front Door (contoso-frontend.azurefd.net).
  4. Azure Front Door вызывает содержимое Azure AD B2C, используя домен <tenant-name>.b2clogin.com по умолчанию Azure AD B2C. Запрос к конечной точке Azure AD B2C включает исходное имя личного домена.
  5. Azure AD B2C отвечает на запрос, выводя соответствующее содержимое и отображая исходный личный домен.

Diagram shows the custom domain networking flow.

Важно!

При подключении браузера к Azure Front Door всегда должен использоваться протокол IPv4, а не IPv6.

При использовании личных доменов необходимо учитывать следующее.

  • Можно настроить несколько личных доменов. Максимальное количество поддерживаемых пользовательских доменов см. в разделе об ограничениях и ограничениях службы Microsoft Entra для Azure AD B2C и подписки Azure, квот и ограничений для Azure Front Door.
  • Azure Front Door — это отдельная служба Azure, поэтому за ее использование взимается дополнительная плата. Дополнительные сведения см. в статье Цены на Azure Front Door.
  • После настройки личных доменов пользователи по-прежнему смогут обращаться к доменному имени Azure AD B2C по умолчанию (<tenant-name>.b2clogin.com), если вы не применяете пользовательскую политику и не блокируете доступ.
  • Если у вас несколько приложений, перенесите все их на личный домен, так как браузер сохраняет сеанс Azure AD B2C под используемым на данный момент доменным именем.

Необходимые компоненты

Шаг 1. Добавление имени личного домена в клиент Azure AD B2C

Каждый новый арендатор Azure AD B2C получает исходное доменное имя в формате <имя_домена>.onmicrosoft.com. Вы не можете изменить или удалить это исходное доменное имя, но можете добавить личный домен.

Выполните следующие шаги, чтобы добавить личный домен в арендатор Azure AD B2C.

  1. Добавьте имя личного домена в идентификатор Microsoft Entra.

    Важно!

    Для этих действий обязательно войдите в клиент Azure AD B2C и выберите службу идентификатора Microsoft Entra.

  2. Настройка сведений о DNS в регистраторе доменных имен. После добавления имени личного домена в идентификатор Microsoft Entra создайте DNS TXTили MX запись для вашего домена. Такая запись DNS создается для домена, чтобы подтвердить права владения доменным именем.

    Следующий пример демонстрирует записи TXT для доменов login.contoso.com и account.contoso.com:

    Имя (имя узла) Тип Data
    Вход TXT MS=ms12345678
    организация TXT MS=ms87654321

    Запись TXT должна сопоставляться с поддоменом или именем узла в домене. Например, с сегментом login в домене contoso.com. Если имя узла пусто или @идентификатор Microsoft Entra не сможет проверить добавленный личный домен. В следующих примерах обе записи настроены неправильно.

    Имя (имя узла) Тип Data
    TXT MS=ms12345678
    @ TXT MS=ms12345678

    Совет

    Управление личным доменом вы можете поручить любой общедоступной службе DNS, например GoDaddy. Если у вас нет DNS-сервера, вы можете использовать зону Azure DNS или домены Службы приложений.

  3. Проверка имени личного домена. Вам нужно выполнить проверку для каждого поддомена или имени узла, которые вы хотите использовать. Например, чтобы иметь возможность войти в систему по адресам login.contoso.com и account.contoso.com, необходимо проверить оба поддомена, а не только домен верхнего уровня contoso.com.

    Важно!

    После проверки домена удалите созданную запись типа TXT из DNS.

Шаг 2. Создание нового экземпляра Azure Front Door

Чтобы создать Azure Front Door, выполните следующие действия:

  1. Войдите на портал Azure.

  2. Чтобы выбрать каталог, содержащий подписку Azure, которую вы хотите использовать для Azure Front Door, а не каталог, содержащий клиент Azure AD B2C, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.

  3. Выполните действия, описанные в статье Создание профиля Front Door— быстрый способ, чтобы создать Front Door для арендатора Azure AD B2C, используя следующие параметры:

    Ключ Значение
    Отток подписок Выберите свою подписку Azure.
    Группа ресурсов Выберите существующую группу ресурсов или создайте новую.
    Имя Задайте имя профиля, например b2cazurefrontdoor.
    Уровень Выберите уровень "Стандартный" или "Премиум". Уровень "Стандартный" оптимизирован для доставки содержимого. Уровень "Премиум" основан на уровне "Стандартный" и ориентирован на безопасность. См. раздел Сравнение уровней.
    Имя конечной точки Введите уникальное на глобальном уровне имя вашей конечной точки, например, b2cazurefrontdoor. Имя узла конечной точки создается автоматически.
    Тип источника Выберите Custom.
    Имя узла источника Введите <tenant-name>.b2clogin.com. Замените <tenant-name>именем вашего арендатора Azure AD B2C, например contoso.b2clogin.com.

    Оставьте поля Кэширование и WAF пустыми.

  4. После создания ресурса Azure Front Door выберите Обзор и скопируйте имя узла конечной точки. Оно будет выглядеть примерно так — b2cazurefrontdoor-ab123e.z01.azurefd.net.

  5. Убедитесь, что имя узла и заголовок узла источника имеют одинаковое значение:

    1. В разделе Параметры выберите Группы источников.
    2. Выберите группу источника из списка, например default-origin-group.
    3. На правой панели выберите свое имя узла источника, например contoso.b2clogin.com.
    4. На панели Обновление источника обновите имя узла и заголовок узла источника, задав для них одинаковое значение.

    Screenshot of how to update custom domain origins.

Шаг 3. Настройка личного домена в Azure Front Door

На этом шаге вы добавите личный домен, который зарегистрировали на шаге 1, в Azure Front Door.

3.1. Создание записи DNS CNAME

Чтобы создать личный домен, создайте запись канонического имени (CNAME) у поставщика домена. Запись CNAME (псевдоним) — это тип записи DNS, позволяющий сопоставить исходное и целевое доменные имена. Для Azure Front Door исходное доменное имя является именем вашего личного домена, а целевое доменное имя — это имя узла Front Door по умолчанию, которое вы настроили, как описано на шаге 2. Создание нового экземпляра Azure Front Door. Например, b2cazurefrontdoor-ab123e.z01.azurefd.net.

Когда Front Door проверит созданную вами запись CNAME, трафик, адресованный исходному личному домену (например, login.contoso.com), будет направляться на указанный целевой интерфейсный узел Front Door по умолчанию, например, contoso-frontend.azurefd.net. Дополнительные сведения см. в руководстве Добавление личного домена в Front Door.

Чтобы создать запись CNAME для личного домена, сделайте следующее.

  1. Войдите на веб-сайт поставщика своего личного домена.

  2. Найдите страницу для управления записями DNS. Для этого ознакомьтесь с документацией поставщика или поищите области веб-сайта, обозначенные как Доменное имя, DNS или Name Server Management (Управление сервером доменных имен).

  3. Создайте запись CNAME для своего личного домена и заполните поля, как показано в таблице ниже (имена полей могут отличаться):

    Оригинал Тип Назначение
    <login.contoso.com> CNAME contoso-frontend.azurefd.net
    • Источник. Введите имя пользовательского домена (например, login.contoso.com).

    • Тип. Введите CNAME.

    • Назначение. Укажите интерфейсный узел Front Door по умолчанию, который вы создали на шаге 2. Должен использоваться следующий формат: <имя узла>.azurefd.net. Например, contoso-frontend.azurefd.net.

  4. Сохранение изменений.

3.2. Связывание личного домена с Front Door

  1. На домашней странице портала Azure найдите и выберите ресурс Azure Front Door myb2cazurefrontdoor, чтобы открыть его.

  2. В меню слева в разделе Параметры выберите Домены.

  3. Нажмите Добавить домен.

  4. Для Управления DNS выберите Все остальные службы DNS.

  5. Для Личного домена введите личный домен, например, login.contoso.com.

  6. Сохраните другие значения в качестве значений по умолчанию и нажмите кнопку Добавить. Личный домен добавляется в список.

  7. В разделе Состояние проверки домена, который вы только что добавили, выберите Ожидание. Откроется панель с информацией о записи TXT.

    1. Войдите на веб-сайт поставщика своего личного домена.

    2. Найдите страницу для управления записями DNS. Для этого ознакомьтесь с документацией поставщика или поищите области веб-сайта, обозначенные как Доменное имя, DNS или Name Server Management (Управление сервером доменных имен).

    3. Создайте новую запись DNS TXT и заполните поля, как показано ниже:

      1. Имя: _dnsauth.contoso.com, но нужно ввести только _dnsauth.
      2. Тип: TXT
      3. Значение: например 75abc123t48y2qrtsz2bvk.......

      После добавления записи DNS TXT состояние проверки в ресурсе Front Door в конечном итоге изменится с Ожидание на Утверждено. Возможно, потребуется перезагрузить страницу, чтобы сохранить изменения.

  8. Вернитесь на портал Azure. В разделе Связь конечной точки только что добавленного домена, выберите опцию Не связана.

  9. В разделе Выбор конечной точки выберите конечную точку имени узла в раскрывающемся списке.

  10. В списке Выбор маршрутов выберите default-route (маршрут по умолчанию), а затем нажмите Связать.

3.3. Включение маршрута

default-route направляет трафик от клиента в Azure Front Door. Затем Azure Front Door использует конфигурацию для отправки трафика в Azure AD B2C. Выполните следующие действия, чтобы включить default-route.

  1. Выберите Диспетчер Front Door.

  2. Чтобы добавить default-route, сначала разверните конечную точку из списка конечных точек в диспетчере Front Door. Затем выберите default-route.

    На следующем снимке экрана показан порядок выбора default-route.

    Screenshot of selecting the default route.

  3. Установите флажок Включить маршрут.

  4. Для сохранения изменений нажмите Обновить.

Шаг 4. Настройка CORS

При настройке пользовательского интерфейса Azure AD B2C с помощью HTML-шаблона необходимо настроить CORS для личного домена.

Настройте хранилище BLOB-объектов для общего доступа к ресурсам независимо от источника, сделав следующее.

  1. Войдите в свою учетную запись хранения на портале Azure.
  2. В меню выберите CORS.
  3. В поле Допустимые источники введите https://your-domain-name. Вместо your-domain-name укажите имя своего домена. Например, https://login.contoso.com. Используйте только строчные буквы в имени своего клиента.
  4. В поле Допустимые методы выберите GET и OPTIONS.
  5. В поле Допустимые заголовки введите звездочку (*).
  6. В поле Доступные заголовки введите звездочку (*).
  7. В поле Максимальный возраст введите 200.
  8. Выберите Сохранить.

Проверка личного домена

  1. Войдите на портал Azure.

  2. Если у вас есть доступ к нескольким клиентам, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.

  3. В портале Azure найдите и выберите Azure AD B2C.

  4. В разделе Политики выберите Пользовательские потоки (политики).

  5. Выберите поток пользователя, а затем выберите Выполнение потока пользователя.

  6. В разделе Приложение выберите зарегистрированное ранее веб-приложение с именем webapp1. В поле URL-адрес ответа должно содержаться значение https://jwt.ms.

  7. Скопируйте URL-адрес в разделе Конечная точка выполнения потока пользователя.

    Screenshot of how to copy the authorization request U R I.

  8. Чтобы сымитировать вход с использованием личного домена, откройте окно веб-браузера и вставьте в адресную строку скопированный URL-адрес. Замените домен Azure AD B2C (<tenant-name>.b2clogin.com) именем личного домена.

    Например, вместо:

    https://contoso.b2clogin.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_susi&client_id=63ba0d17-c4ba-47fd-89e9-31b3c2734339&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login
    

    используйте:

    https://login.contoso.com/contoso.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_susi&client_id=63ba0d17-c4ba-47fd-89e9-31b3c2734339&nonce=defaultNonce&redirect_uri=https%3A%2F%2Fjwt.ms&scope=openid&response_type=id_token&prompt=login    
    
  9. Убедитесь, что Azure AD B2C загружается правильно. Затем выполните вход с локальной учетной записью.

  10. Повторите тест с остальными политиками.

Настройка поставщика удостоверений

Когда пользователь выбирает вариант входа с помощью поставщика удостоверений в социальных сетях, Azure AD B2C инициирует запрос на авторизацию и осуществляет перенаправление пользователя в выбранный поставщик удостоверений для завершения процесса входа. Запрос авторизации с указанием redirect_uri при доменном имени Azure AD B2C по умолчанию:

https://<tenant-name>.b2clogin.com/<tenant-name>/oauth2/authresp

Если настроена политика, разрешающая вход с помощью внешнего поставщика удостоверений, обновите коды URI перенаправления OAuth с указанием личного домена. Большинство поставщиков удостоверений позволяют регистрировать несколько кодов URI перенаправления. Рекомендуется добавлять URI перенаправления вместо того, чтобы заменять их, чтобы можно было протестировать пользовательскую политику, не влияя на приложения, использующие доменное имя Azure AD B2C по умолчанию.

Для следующего кода URI перенаправления выполните следующие действия.

https://<custom-domain-name>/<tenant-name>/oauth2/authresp
  • Замените <custom-domain-name> именем личного домена.
  • Замените <tenant-name> именем или идентификатором арендатора.

В следующем примере показан допустимый URI перенаправления OAuth.

https://login.contoso.com/contoso.onmicrosoft.com/oauth2/authresp

Если выбрано вариант с идентификатором арендатора, допустимый URI перенаправления OAuth будет выглядеть примерно так:

https://login.contoso.com/11111111-1111-1111-1111-111111111111/oauth2/authresp

Метаданные поставщиков удостоверений SAML будут выглядеть примерно так:

https://<custom-domain-name>.b2clogin.com/<tenant-name>/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Настройка приложения

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

Интеграция личного домена применяется к конечным точкам проверки подлинности, в которых используются политики Azure AD B2C (потоки пользователей или пользовательские политики) для проверки подлинности пользователей. Эти конечные точки могут выглядеть примерно так:

  • https://<custom-domain>/<tenant-name>/<policy-name>/v2.0/.well-known/openid-configuration

  • https://<custom-domain>/<tenant-name>/<policy-name>/oauth2/v2.0/authorize

  • https://<custom-domain>/<tenant-name>/<policy-name>/oauth2/v2.0/token

Замена:

Метаданные поставщика службы SAML могут выглядеть примерно так:

https://custom-domain-name/tenant-name/policy-name/Samlp/metadata

(Дополнительно) Использование идентификатора клиента

Можно заменить имя клиента B2C в URL-адресе на идентификатор клиента GUID, чтобы удалить все ссылки на "b2c" в URL-адресе. Идентификатор клиента GUID можно найти на странице обзора B2C на портале Azure. Например, измените https://account.contosobank.co.uk/contosobank.onmicrosoft.com/ на https://account.contosobank.co.uk/<tenant ID GUID>/.

Если решено использовать идентификатор клиента вместо имени клиента, обязательно обновите URI перенаправления OAuth поставщика удостоверений оответствующим образом. Дополнительные сведения см. в разделе о настройке поставщика удостоверений.

Выдача токена

Утверждение имени издателя сертификата токена (iss) изменяется в зависимости от используемого личного домена. Например:

https://<domain-name>/11111111-1111-1111-1111-111111111111/v2.0/

(Необязательно) Блокировка доступа к доменному имени по умолчанию

После добавления личного домена и настройки приложения пользователи по-прежнему смогут получить доступ к домену <tenant-name>.b2clogin.com. Чтобы предотвратить доступ, можно настроить политику для проверки запроса авторизации "имени узла" в списке разрешенных доменов. Имя узла — это имя домена, которое отображается в URL-адресе. Имя узла доступно через арбитры утверждений{Context:HostName}. Затем можно будет предоставить пользовательское сообщение об ошибке.

  1. Пример политики условного доступа, которая проверяет имя узла, доступен на GitHub.
  2. Замените строку yourtenant именем вашего клиента Azure AD B2C в каждом файле. Например, если имя вашего клиента B2C — contosob2c, все экземпляры yourtenant.onmicrosoft.com должны иметь вид contosob2c.onmicrosoft.com.
  3. Загрузите файлы политики в следующем порядке: B2C_1A_TrustFrameworkExtensions_HostName.xml, а затем B2C_1A_signup_signin_HostName.xml.

(Необязательно) Расширенная конфигурация Azure Front Door

Можно использовать расширенную конфигурацию Azure Front Door, например Брандмауэр веб-приложения (WAF). Azure WAF обеспечивает централизованную защиту веб-приложений от распространенных эксплойтов и уязвимостей.

При использовании личных доменов необходимо учитывать следующее:

  • Политика WAF должна быть того же уровня, что и профиль Azure Front Door. Дополнительные сведения о создании политики WAF для использования с Azure Front Door см. в статье Настройка политики WAF.
  • Функция управляемых правил WAF официально не поддерживается, так как она может привести к ложноположительным результатам и помешать передаче допустимых запросов, поэтому используйте настраиваемые правила WAF, только если они соответствуют вашим потребностям.

Устранение неполадок

Azure AD B2C возвращает ошибку "Страница не найдена"

  • Симптом. Вы настроили личный домен, но при попытке входа с помощью этого личного домена появляется сообщение об ошибке HTTP 404.
  • Возможные причины. Эта проблема может быть связана с конфигурацией DNS или серверной конфигурацией Azure Front Door.
  • Разрешение:

В настоящий момент наши услуги недоступны

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

  • Возможные причины. Эта проблема может быть связана с конфигурацией маршрута Azure Front Door.

  • Решение. Проверьте состояние default-route. Если он отключен, включите маршрут. На следующем снимка экрана показано, как должен выглядеть default-route:

    Screenshot of the status of the default-route.

Azure AD B2C возвращает сообщение, что искомый ресурс удален, временно недоступен или его имя изменено.

  • Симптом. Вы настроили личный домен, но при попытке входа с помощью этого личного домена вы получаете следующее сообщение об ошибке: Искомый ресурс удален, временно недоступен или его имя изменено.
  • Возможные причины. Эта проблема может быть связана с проверкой личного домена Microsoft Entra.
  • Решение: убедитесь, что личный домен зарегистрирован и успешно проверен в арендаторе Azure AD B2C.

Поставщик удостоверений возвращает ошибку

  • Симптом. После настройки личного домена можно выполнить вход с использованием локальных учетных записей. Но при входе с учетными данными внешних социальных сетей или поставщиков удостоверений предприятия поставщики удостоверений выдают сообщение об ошибке.
  • Возможные причины. Когда Azure AD B2C перенаправляет пользователя на вход с помощью федеративного поставщика удостоверений, указывается URI перенаправления. URI перенаправления — это конечная точка, в которой поставщик удостоверений возвращает токен. URI перенаправления — это тот же домен, который приложение использует для запроса авторизации. Если URI перенаправления еще не зарегистрирован в поставщике удостоверений, оно может не доверять новому URI перенаправления, что приводит к появлению сообщения об ошибке.
  • Решение. Выполните действия, описанные в разделе Настройка поставщика удостоверений, чтобы добавить новый URI перенаправления.

Часто задаваемые вопросы

Я не вижу личный домен, когда использую команду "Запустить сейчас", чтобы попытаться запустить политику. Почему это происходит?

Скопируйте URL-адрес, измените доменное имя вручную и вставьте его обратно в браузер.

Какой IP-адрес будет представлен Azure AD B2C? IP-адрес пользователя или IP-адрес Azure Front Door?

Azure Front Door передает исходный IP-адрес пользователя. Это IP-адрес, который вы увидите в отчетах аудита или пользовательской политике.

Важно!

Если клиент отправляет x-forwarded-for заголовок в Azure Front Door, Azure AD B2C будет использовать источник x-forwarded-for в качестве IP-адреса пользователя для оценки условного доступа и сопоставителя утверждений{Context:IPAddress}.

Можно ли использовать Брандмауэр веб-приложения (WAF) стороннего поставщика с B2C?

Да, Azure AD B2C поддерживает BYO-WAF (Использование собственных Брандмауэров веб-приложений). Однако необходимо проверить WAF, чтобы убедиться, что он не блокирует и не активирует допустимые запросы для пользовательских потоков или пользовательских политик Azure AD B2C. Узнайте, как настроить AKamai WAF и Cloudflare WAF с помощью Azure AD B2C.

Можно ли разместить экземпляр Azure Front Door не в подписке, в которой находится мой арендатор Azure AD B2C?

Да, Azure Front Door может находиться в другой подписке.

Следующие шаги

Изучите сведения о запросах авторизации OAuth.