Настройка проверки подлинности в примере веб-приложения с помощью Azure AD B2C

В этой статье используется пример веб-приложения ASP.NET, для демонстрации того, как добавить проверку подлинности Azure Active Directory B2C (Azure AD B2C) в веб-приложения.

Важно!

Пример веб-приложения ASP.NET, упоминаемый в этой статье, нельзя использовать для вызова REST API, так как он возвращает маркер идентификатора, а не маркер доступа. О веб-приложении, которое может вызывать REST API, см. в разделе Защита веб-API, созданного с помощью ASP.NET Core, с использованием Azure AD B2C.

Обзор

OpenID Connect (OIDC) представляет собой протокол проверки подлинности, основанный на OAuth 2.0. OIDC можно использовать для безопасного входа пользователей в приложение. В этом примере веб-приложения используется Microsoft Identity Web. Microsoft Identity Web — это набор библиотек ASP.NET Core, которые упрощают процесс добавления проверки подлинности и авторизации в веб-приложения.

Поток входа включает следующие шаги:

  1. Пользователи переходят к веб-приложению и выбирают Вход.
  2. Приложение инициирует запрос на проверку подлинности и перенаправляет пользователей в Azure AD B2C.
  3. Пользователи регистрируются или входят в систему и сбрасывают пароль. Либо они могут использовать для входа учетную запись социальной сети.
  4. После успешного входа Azure AD B2C возвращает в приложение маркер идентификатора.
  5. Приложение проверяет маркер идентификатора, считывает утверждения и возвращает пользователям защищенную страницу.

Если срок действия маркера идентификатора истек или сеанс приложения стал недействительным, приложение инициирует новый запрос проверки подлинности и перенаправляет пользователей в Azure AD B2C. Если сеанс единого входа Azure AD B2C активен, Azure AD B2C выдает маркер доступа, не предлагая пользователю снова выполнить вход. Если же сеанс Azure AD B2C становится недействительным или срок его действия истекает, пользователям предлагается выполнить вход еще раз.

Выйти

Поток выхода включает следующие шаги:

  1. В приложении пользователь выполняет выход.
  2. Приложение очищает объекты сеанса, а библиотека проверки подлинности очищает свой кэш маркеров.
  3. Приложение перенаправляет пользователя в конечную точку выхода Azure AD B2C, чтобы завершить сеанс Azure AD B2C.
  4. Пользователи перенаправляются обратно в приложение.

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

Компьютер, на котором работает одна из следующих служб:

Шаг 1. Настройка потока пользователя

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

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

  • Объединенный пользовательский поток входа и регистрации, например susi. Этот пользовательский поток также поддерживает функцию Забыли пароль?.
  • Пользовательский поток редактирования профиля, например edit_profile.
  • Пользовательский поток сброса пароля, например reset_password.

Azure AD B2C добавляет B2C_1_ в начало имени пользовательского потока. Например, susi преобразуется в B2C_1_susi.

Шаг 2. Регистрация веб-приложения

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

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

Чтобы создать регистрацию веб-приложения, выполните следующие действия:

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

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

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

  4. Щелкните Регистрация приложений и выберите Новая регистрация.

  5. В поле Имя введите имя приложения (например, webapp1).

  6. В области Поддерживаемые типы учетных записей выберите Учетные записи в любом поставщике удостоверений или в организационном каталоге (для аутентификации пользователей с помощью потока пользователей).

  7. В поле URI перенаправления выберите Интернет и введите https://localhost:44316/signin-oidc в поле URL-адреса.

  8. В разделе "Проверка подлинности" перейдите к неявным потокам предоставления и гибридным потокам, выберите маркеры идентификатора (используемые для неявных и гибридных потоков) проверка box.

  9. В разделе Разрешения установите флажок Предоставьте согласие администратора для разрешений openid и offline_access.

  10. Выберите Зарегистрировать.

  11. Выберите Обзор.

  12. Запишите значение параметра Идентификатор приложения (клиента) для использования на более позднем этапе при настройке веб-приложения.

    Screenshot of the web app Overview page for recording your web application ID.

Шаг 3. Получение примера веб-приложения

Скачайте ZIP-файл или клонируйте пример веб-приложения с GitHub.

git clone https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2

Извлеките предоставленный для примера файл в папку, где общая длина пути не превышает 260 символов.

Шаг 4. Настройка примера веб-приложения

В папке примера в подпапке 1-WebApp-OIDC/1-5-B2C/ откройте проект WebApp-OpenIDConnect-DotNet.csproj в Visual Studio или Visual Studio Code.

В корневой папке проекта откройте файл appsettings.json. Он содержит сведения о поставщике удостоверений Azure AD B2C. Обновите следующие свойства параметров приложения:

Раздел Ключ Значение
AzureAdB2C Экземпляр Первая часть имени клиента Azure AD B2C (например, https://contoso.b2clogin.com).
AzureAdB2C Домен Полное имя клиента Azure AD B2C (например, contoso.onmicrosoft.com).
AzureAdB2C ClientId Идентификатор веб-приложения (клиента) из шага 2.
AzureAdB2C SignUpSignInPolicyId Потоки пользователей или настраиваемая политика из шага 1.

Итоговый файл конфигурации должен выглядеть как следующий файл JSON:

"AzureAdB2C": {
  "Instance": "https://contoso.b2clogin.com",
  "Domain": "contoso.onmicrosoft.com",
  "ClientId": "<web-app-application-id>",
  "SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
  "SignUpSignInPolicyId": "<your-sign-up-in-policy>"
}

Шаг 5. Запуск примера веб-приложения

  1. Постройте и запустите проект.

  2. Переход к https://localhost:44316.

  3. Выберите Войти.

    Screenshot of the sign in and sign up button on the project Welcome page.

  4. Завершите процесс регистрации или входа в систему.

После успешной проверки подлинности отображаемое имя появится на панели навигации. Чтобы просмотреть утверждения, возвращаемые маркером Azure AD B2C в приложение, выберите Утверждения.

Screenshot of the web app token claims.

Развертывание приложения

В рабочем приложении URI перенаправления регистрации приложения — это обычно общедоступная конечная точка, где выполняется приложение, например https://contoso.com/signin-oidc.

URI перенаправления в зарегистрированных приложениях можно добавлять и изменять в любое время. На URI перенаправления налагаются следующие ограничения.

  • URL-адрес ответа должен начинаться со схемы https.
  • В URL-адресе ответа учитывается регистр. Его регистр должен соответствовать регистру URL-пути выполняющегося приложения.

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