Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".
В этой статье используется пример веб-приложения ASP.NET, которое вызывает веб-API для иллюстрации добавления проверки подлинности Azure Active Directory B2C (Azure AD B2C) в веб-приложения.
Это важно
Пример веб-приложения ASP.NET, на которое ссылается в этой статье, используется для вызова веб-API с маркером носителя. Веб-приложение, которое не вызывает веб-API, см. в статье Настройка проверки подлинности в примере веб-приложения с помощью Azure AD B2C.
Обзор
OpenID Connect (OIDC) представляет собой протокол проверки подлинности, основанный на OAuth 2.0. Вы можете использовать OIDC для безопасного входа пользователя в приложение. В этом примере веб-приложения используется Веб-сайт удостоверений Майкрософт. Microsoft Identity Web — это набор библиотек ASP.NET Core, которые упрощают добавление поддержки проверки подлинности и авторизации в веб-приложения, которые могут вызывать безопасный веб-API.
Процесс входа включает следующие шаги:
Пользователи переходят к веб-приложению и выбирают Вход.
Приложение инициирует запрос на проверку подлинности и перенаправляет пользователей в Azure AD B2C.
Пользователи регистрируются или входят в систему и сбрасывают пароль. Либо они могут использовать для входа учетную запись социальной сети.
После входа пользователей Azure AD B2C возвращает приложению код авторизации.
Затем приложение выполняет следующие действия:
a. Он меняет код авторизации на токен идентификатора, токен доступа и токен обновления.
б. Он считывает утверждения маркера идентификатора и сохраняет файл cookie авторизации приложения.
с. Он сохраняет маркер обновления в кэше в памяти для последующего использования.
Обзор регистрации приложения
Чтобы обеспечить вход в приложение с помощью Azure AD B2C и вызов веб-API, зарегистрируйте два приложения в каталоге Azure AD B2C.
Регистрация веб-приложения позволяет приложению выполнять вход с помощью Azure AD B2C. Во время регистрации вы указываете URI перенаправления. URI перенаправления — это конечная точка, в которую пользователи перенаправляются службой Azure AD B2C после завершения проверки подлинности с помощью Azure AD B2C. В процессе регистрации приложения создается идентификатор приложения, который также называется идентификатором клиента. Он однозначно идентифицирует ваше приложение. Кроме того, создается секрет клиента, который используется приложением для безопасного получения маркеров.
Регистрация веб-API позволяет приложению вызывать безопасный веб-API. Регистрация включает области веб-API. Области предоставляют возможностью управления разрешениями для защищенных ресурсов, например веб-API. Вы предоставляете веб-приложению разрешения для областей веб-API. При запросе маркера доступа приложению необходимо указать нужные разрешения в параметре scope запроса.
Архитектура и регистрация приложения показаны на следующей схеме:
Вызов веб-API-интерфейса
После завершения проверки подлинности пользователи взаимодействуют с приложением, которое вызывает защищенный веб-API. Этот веб-API использует проверку подлинности посредством маркера носителя. Маркер носителя — это маркер доступа, полученный приложением от Azure AD B2C. Приложение передает маркер в заголовке авторизации HTTPS-запроса.
Authorization: Bearer <access token>
Если область действия токена доступа не соответствует областям веб-API, библиотека аутентификации получает новый токен доступа с правильными областями.
Выход
Процесс выхода из системы включает следующие шаги:
- Пользователи выходят из приложения.
- Приложение очищает объекты сеанса, а библиотека проверки подлинности очищает свой кэш маркеров.
- Приложение перенаправляет пользователя в конечную точку выхода Azure AD B2C, чтобы завершить сеанс Azure AD B2C.
- Пользователи перенаправляются обратно в приложение.
Предпосылки
Компьютер, на котором работает любой из следующих вариантов:
- Visual Studio 2022 17.0 или более поздней версии с рабочей нагрузкой ASP.NET и веб-разработки
- Пакет SDK для .NET 6.0
Шаг 1. Настройка потока пользователя
Если пользователи пытаются войти в приложение, оно инициирует запрос проверки подлинности к конечной точке авторизации через поток пользователя. Соответствующий поток пользователя определяет и контролирует взаимодействие с пользователем. Когда пользователи завершают пользовательский поток, Azure AD B2C создает токен и перенаправляет пользователей обратно в ваше приложение.
Создайте поток пользователя или пользовательскую политику, если вы еще не сделали этого. Повторите эти шаги, чтобы создать три отдельных пользовательских потока:
- Объединенный пользовательский поток входа и регистрации, например
susi
. Этот пользовательский поток также поддерживает функцию Забыли пароль?. - Последовательность действий пользователя для редактирования профиля, например
edit_profile
. - Процесс сброса пароля, например
reset_password
.
Azure AD B2C добавляет B2C_1_
в начало имени пользовательского потока. Например, susi
преобразуется в B2C_1_susi
.
Шаг 2. Регистрация веб-приложений
На этом шаге вы создадите веб-приложение и регистрацию веб-API и укажите области веб-API.
Шаг 2.1. Регистрация веб-приложения API
Чтобы создать регистрацию приложения веб-API (идентификатор приложения: 2), выполните следующие действия.
Войдите на портал Azure.
Убедитесь, что вы используете каталог, содержащий арендатора Azure AD B2C. На панели инструментов портала выберите значок Каталоги и подписки.
В настройках портала на странице Каталоги и подписки найдите свой каталог Azure AD B2C в списке Имя каталога и выберите Переключить.
В портале Azure найдите и выберите Azure AD B2C.
Выберите регистрации приложений и нажмите кнопку "Создать регистрацию".
В поле Имя введите имя приложения (например, my-api1). Оставьте значения по умолчанию для URI перенаправления и поддерживаемых типов учетных записей.
Выберите Зарегистрировать.
Когда регистрация приложения завершится, выберите Обзор.
Запишите значение идентификатора приложения (клиента) для дальнейшего использования при настройке веб-приложения.
Шаг 2.2. Настройка областей веб-API
Выберите созданное приложение my-api1 (идентификатор приложения: 2), чтобы открыть страницу Обзор.
В разделе "Управление" выберите "Предоставить API".
Рядом с полем URI идентификатора приложения щелкните ссылку Задать. Замените значение по умолчанию (уникальный идентификатор) уникальным именем (например, tasks-api), а затем нажмите Сохранить.
Когда веб-приложение запрашивает маркер доступа для веб-API, оно должно добавить этот URI в качестве префикса для каждой области, определяемой для API.
В разделе "Области", определенные этим API, выберите "Добавить область".
Чтобы создать область, определяющую доступ для чтения к API, сделайте следующее.
- В поле Имя области введите tasks.read.
- В качестве отображаемого имени согласия администратора укажите Доступ на чтение к API задач.
- В качестве описания согласия администратора введите Предоставляет доступ на чтение к API задач.
Выберите "Добавить область".
Выберите Добавить область и добавьте область, определяющую доступ для записи к API:
- В поле Имя области введите tasks.write.
- В качестве отображаемого имени согласия администратора укажите Право записи для API задач.
- В качестве описания согласия администратора введите Предоставляет доступ для записи к API задач.
Выберите "Добавить область".
Шаг 2.3. Регистрация веб-приложения
Чтобы создать регистрацию веб-приложения, сделайте следующее:
Выберите регистрации приложений и нажмите кнопку "Создать регистрацию".
В разделе "Имя" введите имя приложения (например, webapp1).
В разделе "Поддерживаемые типы учетных записей" выберите "Учетные записи" в любом поставщике удостоверений или каталоге организации (для проверки подлинности пользователей с помощью потоков пользователей).
В поле URI перенаправления выберите Интернет и введите
https://localhost:5000/signin-oidc
в поле URL-адреса.В разделе Разрешения установите флажок Предоставьте согласие администратора для разрешений openid и offline_access.
Выберите Зарегистрировать.
Когда регистрация приложения завершится, выберите Обзор.
Запишите значение параметра Идентификатор приложения (клиента) для использования на более позднем этапе при настройке веб-приложения.
Шаг 2.4. Создание секрета клиента веб-приложения
Создайте секрет клиента для зарегистрированного веб-приложения. Веб-приложение использует секрет клиента для подтверждения своей подлинности при запросе токенов.
- В разделе Управление, выберите Сертификаты и секреты.
- Выберите новый секрет клиента.
- В поле "Описание " введите описание секрета клиента (например, clientecret1).
- В разделе Истекает выберите срок действия секрета, а затем выберите Добавить.
- Запишите значение секрета. Это значение будет использоваться для настройки на следующем шаге.
Шаг 2.5. Предоставление разрешений веб-приложения для веб-API
Чтобы предоставить своему приложению (идентификатор приложения: 1) разрешения, выполните следующие действия.
Выберите Регистрация приложений, а затем выберите созданное вами приложение (идентификатор приложения: 1).
В разделе Управление выберите Разрешения API.
В разделе Настроенные разрешения выберите Добавить разрешение.
Выберите вкладку Мои API.
Выберите API (идентификатор приложения: 2), к которому веб-приложению должен быть предоставлен доступ. Например, введите my-api1.
Под Разрешение разверните tasks, а затем выберите ранее определенные области (например, tasks.read и tasks.write).
Выберите Добавить разрешения.
Выберите Предоставить согласие администратора для <имя арендатора>.
Выберите Да.
Выберите Обновить, а затем убедитесь, что Разрешено для... отображается в разделе Состояние для обеих областей.
В списке настроенных разрешений выберите свою область, а затем скопируйте полное имя области.
Шаг 3. Получение примера веб-приложения
Скачайте ZIP-файл или выполните следующую команду Bash, чтобы клонировать пример веб-приложения из GitHub.
git clone https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2
Извлеките предоставленный для примера файл в папку, где общая длина пути не превышает 260 символов.
Шаг 4. Настройка примера веб-API
В папке примера в папке 4-WebApp-your-API/4-2-B2C/TodoListService откройте проект TodoListService.csproj с помощью Visual Studio или Visual Studio Code.
В корневой папке проекта откройте файл appsettings.json. Этот файл содержит сведения о поставщике удостоверений Azure AD B2C. Приложение веб-API использует эту информацию для проверки токена доступа, который веб-приложение передает в качестве токена-носителя. Обновите следующие свойства параметров приложения:
Секция | Ключ | Ценность |
---|---|---|
AzureAdB2C | Пример | Первая часть имени клиента Azure AD B2C. Например: https://contoso.b2clogin.com . |
AzureAdB2C | Домен | Полное имя клиента Azure AD B2C. Например: contoso.onmicrosoft.com . |
AzureAdB2C | ClientId | Идентификатор приложения веб-API из шага 2.1. |
AzureAdB2C | ИдентификаторПолитикиРегистрацииИВхода | Потоки пользователей или настраиваемая политика из шага 1. |
Окончательный файл конфигурации должен выглядеть следующим образом:
{
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-api-app-application-id>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
},
// More settings here
}
Шаг 4.1. Настройка политики разрешений
Веб-API проверяет, прошел ли пользователь проверку подлинности с помощью маркера носителя, а маркер носителя имеет настроенные допустимые области. Если маркер носителя не имеет каких-либо из этих принятых областей, веб-API возвращает код состояния HTTP 403 (запрещено) и записывает в текст ответа сообщение, указывающее, какие области ожидаются в маркере.
Чтобы настроить принятые области, откройте Controller/TodoListController.cs
класс и задайте имя области без полного URI.
[RequiredScope("tasks.read")]
Шаг 4.2. Запуск примера веб-ПРИЛОЖЕНИЯ API
Чтобы разрешить веб-приложению вызывать пример веб-API, запустите веб-API, выполнив следующие действия:
- Если вам будет предложено сделать это, восстановите зависимости.
- Соберите проект и запустите его.
- После создания проекта Visual Studio или Visual Studio Code запускает веб-API в браузерах со следующим адресом: https://localhost:44332.
Шаг 5. Настройка примера веб-приложения
В папке примера в папке 4-WebApp-your-API/4-2-B2C/Client
откройте проект TodoListClient.csproj с помощью Visual Studio или Visual Studio Code.
В корневой папке проекта откройте appsettings.json
файл. Этот файл содержит сведения о поставщике удостоверений Azure AD B2C. Веб-приложение использует эти сведения для установления отношения доверия с Azure AD B2C, входа пользователей и выхода, получения маркеров и проверки их. Обновите следующие свойства параметров приложения:
Секция | Ключ | Ценность |
---|---|---|
AzureAdB2C | Пример | Первая часть имени арендатора в Azure AD B2C tenant name (например, https://contoso.b2clogin.com ). |
AzureAdB2C | Домен | Полное имя клиента Azure AD B2C (например, contoso.onmicrosoft.com ). |
AzureAdB2C | ClientId | Идентификатор веб-приложения из шага 2.3. |
AzureAdB2C | Секрет клиента | Секрет веб-приложения из шага 2.4. |
AzureAdB2C | ИдентификаторПолитикиРегистрацииИВхода | Потоки пользователя или настраиваемая политика, созданная на шаге 1. |
Список дел | TodoListScope (Список дел) | Области веб-API, созданные на шаге 2.5. |
Список дел | TodoListBaseAddress | Базовый универсальный код ресурса (URI) веб-API (например https://localhost:44332 ). |
Окончательный файл конфигурации должен выглядеть следующим образом в формате JSON:
{
"AzureAdB2C": {
"Instance": "https://contoso.b2clogin.com",
"Domain": "contoso.onmicrosoft.com",
"ClientId": "<web-app-application-id>",
"ClientSecret": "<web-app-application-secret>",
"SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
"SignUpSignInPolicyId": "<your-sign-up-in-policy>"
},
"TodoList": {
"TodoListScope": "https://contoso.onmicrosoft.com/api/demo.read",
"TodoListBaseAddress": "https://localhost:44332"
}
}
Шаг 6. Запуск примера веб-приложения
- Соберите проект и запустите его.
- Перейдите по ссылке
https://localhost:5000
. - Завершите процесс регистрации или входа в систему.
После успешной проверки подлинности вы увидите отображаемое имя на панели навигации. Чтобы просмотреть утверждения, возвращаемые маркером Azure AD B2C, выберите TodoList.
Развертывание приложения
В рабочем приложении универсальный код ресурса (URI) перенаправления регистрации приложений обычно является общедоступной конечной точкой, в которой работает ваше приложение, например https://contoso.com/signin-oidc
.
URI перенаправления в зарегистрированных приложениях можно добавлять и изменять в любое время. На URI перенаправления налагаются следующие ограничения.
- URL-адрес ответа должен начинаться со схемы
https
. - В URL-адресе ответа учитывается регистр. Его регистр должен соответствовать регистру URL-пути запущенного приложения.
Кэш маркеров для веб-приложения
В примере веб-приложения используется сериализация кэша маркеров в памяти. Эта реализация отлична в примерах. Это также хорошо в рабочих приложениях, если кэш токенов теряется при перезапуске веб-приложения.
Для рабочей среды рекомендуется использовать распределенный кэш памяти. Например, кэш Redis, NCache или кэш SQL Server. Дополнительные сведения о реализации распределенного кэша памяти см. в разделе сериализация кэша маркеров.
Дальнейшие шаги
- Дополнительные сведения о примере кода.
- Узнайте, как включить проверку подлинности в собственном веб-приложении с помощью Azure AD B2C.
- Узнайте, как включить проверку подлинности в собственном веб-API.