Краткое руководство. Вход пользователей и вызов API Microsoft Graph из веб-приложения Java
При работе с этим кратким руководством вы скачаете и выполните пример кода. Такой пример кода демонстрирует, как в веб-приложении Java реализовать вход пользователей и вызов Microsoft Graph. Пользователи из любой организации Microsoft Entra могут войти в приложение.
Иллюстрацию см. в разделе Как работает этот пример.
Необходимые компоненты
Для запуска этого примера вам потребуются следующие компоненты:
- Пакет SDK для Java 8 или более поздней версии.
- Maven.
Регистрация и скачивание приложения, используемого в этом кратком руководстве
Совет
Действия, описанные в этой статье, могут немного отличаться на портале, с который вы начинаете работу.
Есть два варианта запуска приложения, используемого в этом кратком руководстве: оперативно (вариант 1) и вручную (вариант 2).
Вариант 1. Регистрация и автоматическая настройка приложения, а затем скачивание примера кода
- Перейдите в Центр администрирования Microsoft Entra— Регистрация приложений краткое руководство по крайней мере облачное приложение Администратор istrator.
- Введите имя приложения и нажмите кнопку Зарегистрировать.
- Следуйте инструкциям на экране, чтобы скачать автоматически настроенный код приложения.
Вариант 2. Регистрация и настройка приложения и примера кода вручную
Шаг 1. Регистрация приложения
Чтобы зарегистрировать приложение и добавить в него сведения о регистрации вручную, сделайте следующее:
- Войдите в Центр администрирования Microsoft Entra как минимум облачные приложения Администратор istrator.
- Если у вас есть доступ к нескольким клиентам, используйте значок Параметры в верхнем меню, чтобы переключиться на клиент, в котором вы хотите зарегистрировать приложение из меню каталогов и подписок.
- Перейдите к приложениям> удостоверений>Регистрация приложений и выберите "Создать регистрацию".
- Введите имя приложения, например java-webapp. Это имя отображается для пользователей вашего приложения. Его можно будет изменить впоследствии.
- Выберите Зарегистрировать.
- На странице Обзор запишите идентификаторы приложения (клиента) и каталога (арендатора). Эти значения потребуются позже.
- В разделе Управление выберите Проверка подлинности.
- Выберите Добавить платформу>Веб.
- В разделе URI перенаправления введите
https://localhost:8443/msal4jsample/secure/aad
. - Выберите Настроить.
- В разделе Веб в поле URI-коды перенаправления введите
https://localhost:8443/msal4jsample/graph/me
в качестве второго URI перенаправления. - В разделе Управление выберите Сертификаты и секреты. В разделе Секреты клиента выберите Создать секрет клиента.
- Введите описание ключа (например, Секрет приложения), оставьте срок действия по умолчанию и выберите элемент Добавить.
- Запишите значение секрета клиента. Оно понадобится вам позже.
Шаг 2. Скачивание примера кода
Шаг 3. Настройка примера кода
Извлеките ZIP-файл в локальную папку.
Необязательно. Если вы используете интегрированную среду разработки, откройте пример в этой среде.
Откройте файл 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
— это значение идентификатора каталога (арендатора) приложения, которое вы зарегистрировали.
- Чтобы использовать протокол 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
- Поместите созданный файл хранилища ключей в папку resources.
Шаг 4. Запуск примера кода
Чтобы запустить проект, выполните одно из следующих действий:
- Запустите его непосредственно из IDE, используя встроенный сервер Spring Boot.
- Упакуйте проект в WAR-файл с помощью Maven, а затем разверните в решении J2EE для контейнеров, например в Apache Tomcat.
Запуск проекта из IDE
Чтобы запустить веб-приложение из IDE, щелкните элемент "Запустить", а затем перейдите на домашнюю страницу проекта. В этом примере стандартная домашняя страница имеет следующий URL-адрес: https://localhost:8443..
На первой странице нажмите кнопку "Вход" , чтобы перенаправить пользователей на идентификатор Microsoft Entra ИД и предложить им учетные данные.
После проверки подлинности пользователи перенаправляются по адресу
https://localhost:8443/msal4jsample/secure/aad
. После входа на странице появятся сведения об учетной записи пользователя. В примере пользовательского интерфейса есть следующие кнопки:- Выход: подписывает текущего пользователя из приложения и перенаправляет этого пользователя на домашнюю страницу.
- Отображение сведений о пользователе. Получает маркер для Microsoft Graph и вызывает Microsoft Graph с запросом, содержащим маркер, который возвращает основные сведения о входе пользователя.
Запуск проекта из Tomcat
Если вы хотите развернуть пример веб-приложения в Tomcat, внесите несколько изменений в исходный код.
Откройте файл 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); } }
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"/>
Откройте окно командной строки. Перейдите в корневую папку этого примера (где
pom.xml
находится файл) и выполните сборкуmvn package
проекта.- Эта команда создаст
msal-web-sample-0.1.0.war
файл в каталоге/targets
. - Переименуйте этот файл
msal4jsample.war
в . - Разверните этот WAR-файл с помощью Tomcat или любого другого решения J2EE для контейнеров.
- Чтобы развернуть
msal4jsample.war
файл, скопируйте его/webapps/
в каталог в установке Tomcat и запустите сервер Tomcat.
- Чтобы развернуть
- Эта команда создаст
После развертывания файла перейдите по адресу
https://localhost:8443/msal4jsample
в браузере.
Важно!
В рамках этого краткого руководства приложение использует секрет клиента для собственной идентификации в качестве конфиденциального клиента. Так как секрет клиента добавляется в качестве обычного текста в файлы проекта, из соображений безопасности рекомендуем применять сертификат вместо секрета клиента, прежде чем использовать приложение в рабочей среде. Дополнительные сведения о том, как использовать сертификат, см. в статье Учетные данные сертификата для аутентификации приложения.
Дополнительные сведения
Как работает этот пример
Получение 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.*;
Справка и поддержка
Если вам нужна помощь, если вы хотите сообщить о проблеме или узнать о доступных вариантах поддержки, воспользуйтесь статьей Возможности получения поддержки и справки для разработчиков.
Следующие шаги
Тема создания веб-приложений, в которых вход пользователей выполняется с помощью платформы удостоверений Майкрософт, подробно рассматривается в нашей серии сценариев: