Вход пользователей с помощью библиотеки проверки подлинности Майкрософт

Завершено

Вы зарегистрировали веб-приложение с идентификатором Microsoft Entra. Теперь вы готовы добавить код проверки подлинности для входа пользователей в приложение и использовать пакет SDK, который может обрабатывать сведения о проверке подлинности. В этом уроке вы узнаете о библиотеке проверки подлинности Майкрософт для Java (MSAL4J) и о том, как она помогает с проверкой подлинности.

Библиотека аутентификации Майкрософт для Java

Библиотека проверки подлинности Майкрософт для Java (MSAL4J) позволяет приложениям выполнять вход пользователей или приложений с помощью удостоверений Майкрософт (идентификатор Microsoft Entra, учетных записей Майкрософт и учетных записей Azure Active Directory B2C) и получать маркеры для вызова API Майкрософт или собственных API, зарегистрированных в идентификаторе Microsoft Entra ID. Он построен с использованием отраслевых протоколов OAuth2 и OpenID Connect.

Библиотека предоставляет удобные API,которые обеспечивают проверку подлинности с помощью идентификатора Microsoft Entra для различных типов приложений:

  • Веб-приложения
  • Службы управляющей программы
  • Приложения командной строки
  • Классические приложения

Инициализация объекта MSAL

Чтобы начать использование MSAL, необходимо инициализировать и настроить объект MSAL в коде приложения.

MSAL представляет клиентские приложения как общедоступные клиенты и конфиденциальные клиенты. Они отличаются друг от друга возможностью безопасной проверки подлинности с помощью сервера авторизации и сохранения конфиденциальности своих клиентских учетных данных.

Конфиденциальные клиенты — это приложения, работающие на серверах (веб-приложения, приложения веб-API и даже служебные или управляющие приложения). Конфиденциальные клиенты могут содержать секреты приложения времени настройки.

Вы можете создать экземпляр конфиденциального клиента следующим образом:

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
                                        .builder(CLIENT_ID, credential)
                                        .authority(AUTHORITY)
                                        .build();
  • CLIENT_ID. Идентификатор клиента — это уникальный идентификатор приложения (клиента), назначенный приложению идентификатором Microsoft Entra ID при регистрации приложения.
  • CLIENT_SECRET. Секрет клиента для конфиденциального клиентского приложения, созданный при регистрации приложения.
  • AUTHORITY. Это URL-адрес, указывающий на каталог, из которого MSAL может запрашивать маркеры. Он состоит из экземпляра поставщика удостоверений и аудитории входа для приложения.

Получение маркеров проверки подлинности с помощью MSAL

MSAL предоставляет методы acquireToken, чтобы инициировать поток проверки подлинности и вернуть AuthenticationResult с маркерами проверки подлинности.

Когда пользователь завершает вход, маркер идентификатора возвращается в результате проверки подлинности, содержащей некоторые основные утверждения проверки подлинности, такие как имя пользователя, электронная почта и т. д.

Ниже приведен пример получения маркеров с помощью MSAL:

final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                                                    .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
                                                    .build();

final IAuthenticationResult result = app.acquireToken(authParams).get();
  • REDIRECT_URI. URI перенаправления — это универсальный код ресурса (URI), в который поставщик удостоверений отправляет маркеры безопасности обратно. Он должен соответствовать URI перенаправления в регистрации приложения Microsoft Entra.
  • SCOPES: области — это разрешения, запрошенные приложением. Обычно трех областей openid profile offline_access достаточно для получения ответа маркера идентификации для входа пользователя. Они задаются MSAL по умолчанию.

acquireToken Используйте методы в приложении при инициировании потока входа для пользователей и вызова API для доступа к данным.