Краткое руководство. Вход пользователей и вызов API Microsoft Graph из веб-приложения Java

При работе с этим кратким руководством вы скачаете и выполните пример кода. Такой пример кода демонстрирует, как в веб-приложении Java реализовать вход пользователей и вызов Microsoft Graph. Пользователи из любой организации Microsoft Entra могут войти в приложение.

Иллюстрацию см. в разделе Как работает этот пример.

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

Для запуска этого примера вам потребуются следующие компоненты:

Регистрация и скачивание приложения, используемого в этом кратком руководстве

Совет

Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.

Есть два варианта запуска приложения, используемого в этом кратком руководстве: оперативно (вариант 1) и вручную (вариант 2).

Вариант 1. Регистрация и автоматическая настройка приложения, а затем скачивание примера кода

  1. Перейдите в Центр администрирования Microsoft Entra— Регистрация приложений краткое руководство по крайней мере облачное приложение Администратор istrator.
  2. Введите имя приложения и нажмите кнопку Зарегистрировать.
  3. Следуйте инструкциям на экране, чтобы скачать автоматически настроенный код приложения.

Вариант 2. Регистрация и настройка приложения и примера кода вручную

Шаг 1. Регистрация приложения

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

  1. Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
  2. Если у вас есть доступ к нескольким клиентам, используйте значок Параметры в верхнем меню, чтобы переключиться на клиент, в котором вы хотите зарегистрировать приложение из меню каталогов и подписок.
  3. Перейдите к приложениям> удостоверений>Регистрация приложений и выберите "Создать регистрацию".
  4. Введите имя приложения, например java-webapp. Это имя отображается для пользователей вашего приложения. Его можно будет изменить впоследствии.
  5. Выберите Зарегистрировать.
  6. На странице Обзор запишите идентификаторы приложения (клиента) и каталога (арендатора). Эти значения потребуются позже.
  7. В разделе Управление выберите Проверка подлинности.
  8. Выберите Добавить платформу>Веб.
  9. В разделе URI перенаправления введите https://localhost:8443/msal4jsample/secure/aad.
  10. Выберите Настроить.
  11. В разделе Веб в поле URI-коды перенаправления введите https://localhost:8443/msal4jsample/graph/me в качестве второго URI перенаправления.
  12. В разделе Управление выберите Сертификаты и секреты. В разделе Секреты клиента выберите Создать секрет клиента.
  13. Введите описание ключа (например, Секрет приложения), оставьте срок действия по умолчанию и выберите элемент Добавить.
  14. Запишите значение секрета клиента. Оно понадобится вам позже.

Шаг 2. Скачивание примера кода

Скачивание примера кода

Шаг 3. Настройка примера кода

  1. Извлеките ZIP-файл в локальную папку.

  2. Необязательно. Если вы используете интегрированную среду разработки, откройте пример в этой среде.

  3. Откройте файл application.properties. Его можно найти в папке src/main/resources/. Замените значения в полях aad.clientId, aad.authority и aad.secretKey значениями идентификатора приложения, идентификатора арендатора и секрета клиента соответственно. Это будет выглядеть примерно так:

     aad.clientId=Enter_the_Application_Id_here
     aad.authority=https://login.microsoftonline.com/Enter_the_Tenant_Info_Here/
     aad.secretKey=Enter_the_Client_Secret_Here
     aad.redirectUriSignin=https://localhost:8443/msal4jsample/secure/aad
     aad.redirectUriGraph=https://localhost:8443/msal4jsample/graph/me
     aad.msGraphEndpointHost="https://graph.microsoft.com/"
    

В предыдущем коде:

  • Enter_the_Application_Id_here — идентификатор регистрируемого приложения.
  • Enter_the_Client_Secret_Here — это секрет клиента, созданный вами в разделе сертификатов и секретов для зарегистрированного приложения.
  • Enter_the_Tenant_Info_Here — это значение идентификатора каталога (арендатора) приложения, которое вы зарегистрировали.
  1. Чтобы использовать протокол HTTPS с localhost, укажите свойства server.ssl.key. Чтобы создать самозаверяющий сертификат, используйте служебную программу keytool (входит в JRE).

Приведем пример:

keytool -genkeypair -alias testCert -keyalg RSA -storetype PKCS12 -keystore keystore.p12 -storepass password

server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=testCert
  1. Поместите созданный файл хранилища ключей в папку resources.

Шаг 4. Запуск примера кода

Чтобы запустить проект, выполните одно из следующих действий:

  • Запустите его непосредственно из IDE, используя встроенный сервер Spring Boot.
  • Упакуйте проект в WAR-файл с помощью Maven, а затем разверните в решении J2EE для контейнеров, например в Apache Tomcat.
Запуск проекта из IDE

Чтобы запустить веб-приложение из IDE, щелкните элемент "Запустить", а затем перейдите на домашнюю страницу проекта. В этом примере стандартная домашняя страница имеет следующий URL-адрес: https://localhost:8443..

  1. На первой странице нажмите кнопку "Вход" , чтобы перенаправить пользователей на идентификатор Microsoft Entra ИД и предложить им учетные данные.

  2. После проверки подлинности пользователи перенаправляются по адресу https://localhost:8443/msal4jsample/secure/aad. После входа на странице появятся сведения об учетной записи пользователя. В примере пользовательского интерфейса есть следующие кнопки:

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

Если вы хотите развернуть пример веб-приложения в Tomcat, внесите несколько изменений в исходный код.

  1. Откройте файл ms-identity-java-webapp/src/main/java/com.microsoft.azure.msalwebsample/MsalWebSampleApplication.

    • Удалите весь исходный код, заменив его следующим кодом:

       package com.microsoft.azure.msalwebsample;
      
       import org.springframework.boot.SpringApplication;
       import org.springframework.boot.autoconfigure.SpringBootApplication;
       import org.springframework.boot.builder.SpringApplicationBuilder;
       import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
      
       @SpringBootApplication
       public class MsalWebSampleApplication extends SpringBootServletInitializer {
      
        public static void main(String[] args) {
         SpringApplication.run(MsalWebSampleApplication.class, args);
        }
      
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
         return builder.sources(MsalWebSampleApplication.class);
        }
       }
      
  2. HTTP-порт Tomcat по умолчанию — 8080, но вам требуется HTTPS-подключение через порт 8443. Чтобы настроить этот параметр:

    • Перейдите к файлу tomcat/conf/server.xml.

    • Найдите тег <connector> и замените существующий соединитель следующим соединителем:

      <Connector
               protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="8443" maxThreads="200"
               scheme="https" secure="true" SSLEnabled="true"
               keystoreFile="C:/Path/To/Keystore/File/keystore.p12" keystorePass="KeystorePassword"
               clientAuth="false" sslProtocol="TLS"/>
      
  3. Откройте окно командной строки. Перейдите в корневую папку этого примера (где pom.xml находится файл) и выполните сборку mvn package проекта.

    • Эта команда создаст msal-web-sample-0.1.0.war файл в каталоге /targets .
    • Переименуйте этот файл msal4jsample.warв .
    • Разверните этот WAR-файл с помощью Tomcat или любого другого решения J2EE для контейнеров.
      • Чтобы развернуть msal4jsample.war файл, скопируйте его /webapps/ в каталог в установке Tomcat и запустите сервер Tomcat.
  4. После развертывания файла перейдите по адресу https://localhost:8443/msal4jsample в браузере.

Важно!

В рамках этого краткого руководства приложение использует секрет клиента для собственной идентификации в качестве конфиденциального клиента. Так как секрет клиента добавляется в качестве обычного текста в файлы проекта, из соображений безопасности рекомендуем применять сертификат вместо секрета клиента, прежде чем использовать приложение в рабочей среде. Дополнительные сведения о том, как использовать сертификат, см. в статье Учетные данные сертификата для аутентификации приложения.

Дополнительные сведения

Как работает этот пример

Diagram that shows how the sample app generated by this quickstart works.

Получение MSAL

MSAL для Java (MSAL4J) — это библиотека Java, используемая для выполнения входа пользователей и запрашивания маркеров, которые нужны для доступа к API, защищенному платформой удостоверений Майкрософт.

Добавьте библиотеку MSAL4J в приложение с помощью Maven или Gradle для управления зависимостями, внеся следующие изменения в файл pom.xml (Maven) или build.gradle (Gradle) приложения.

В файле pom.xml:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>msal4j</artifactId>
    <version>1.0.0</version>
</dependency>

В файле build.gradle:

compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'

Инициализация MSAL

Добавьте ссылку на MSAL для Java, добавив следующий код в начало файла, в котором будет использоваться MSAL4J:

import com.microsoft.aad.msal4j.*;

Справка и поддержка

Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.

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

Тема создания веб-приложений, в которых вход пользователей выполняется с помощью платформы удостоверений Майкрософт, подробно рассматривается в нашей серии сценариев: