Краткое руководство. Вход пользователей и вызов API Microsoft Graph из веб-приложения Java
В этом кратком руководстве вы скачаете и запустите пример кода, демонстрирующий, как веб-приложение Java может авторизовать пользователей и вызывать API Microsoft Graph. Пользователи из любой организации Microsoft Entra могут войти в приложение.
См. Как работает образец для наглядности.
Необходимые условия
Чтобы запустить этот пример, вам потребуется:
- пакет средств разработки Java (JDK) 8 или более поздняя версия.
- Maven.
Регистрация и скачивание приложения быстрого запуска
Существует два способа запуска приложения быстрого запуска: express (вариант 1) и вручную (вариант 2).
Вариант 1. Регистрация и автоматическая настройка приложения, а затем скачивание примера кода
- Перейдите в центр администрирования Microsoft Entra — раздел регистрации приложений, используя краткое руководство, будучи, по крайней мере, Администратором облачных приложений.
- Введите имя приложения, а затем выберите Зарегистрировать.
- Следуйте инструкциям в кратком руководстве портала, чтобы скачать автоматически настроенный код приложения.
Вариант 2. Регистрация и настройка приложения и примера кода вручную
Шаг 1. Регистрация приложения
Чтобы зарегистрировать приложение и вручную добавить в него сведения о регистрации приложения, выполните следующие действия:
- Войдите в Центр администрирования Microsoft Entra как минимум Администратора облачных приложений.
- Если у вас есть доступ к нескольким арендаторам, используйте значок настроек
в верхнем меню, чтобы переключиться на арендатора, в котором вы хотите зарегистрировать приложение, из меню Каталоги и подписки.
- Перейдите к Identity>Приложения>регистрация приложений и выберите "Новая регистрация".
- Введите имя для вашего приложения, например 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
- Поместите созданный файл хранилища ключей в папку ресурсов.
Шаг 4. Запуск примера кода
Чтобы запустить проект, выполните одно из следующих действий:
- Запустите его непосредственно из интегрированной среды разработки с помощью встроенного сервера Spring Boot.
- Упаковайте его в WAR-файл с помощью Maven, а затем разверните его в решение контейнера J2EE, например Apache Tomcat.
Запуск проекта из интегрированной среды разработки
Чтобы запустить веб-приложение из интегрированной среды разработки, выберите команду run, а затем перейдите на домашнюю страницу проекта. Для этого примера URL-адрес домашней страницы стандартный — https://localhost:8443.
На главной странице нажмите кнопку входа, чтобы перенаправить пользователей на Microsoft Entra ID и запросить их учетные данные.
После проверки подлинности пользователи перенаправляются на
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, защищенному платформой идентификации Microsoft.
Добавьте 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.*;
Справка и поддержка
Если вам нужна помощь, вы хотите сообщить о проблеме или узнать о вариантах поддержки, см. раздел справка и поддержка для разработчиков.
Дальнейшие действия
Дополнительные сведения о создании веб-приложений, в которые пользователи могут входить на платформе удостоверений Майкрософт, см. в многосерийном сценарии.