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

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

См. Как работает образец для наглядности.

Необходимые условия

Чтобы запустить этот пример, вам потребуется:

Регистрация и скачивание приложения быстрого запуска

Существует два способа запуска приложения быстрого запуска: express (вариант 1) и вручную (вариант 2).

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

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

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

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

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

  1. Войдите в Центр администрирования Microsoft Entra как минимум Администратора облачных приложений.
  2. Если у вас есть доступ к нескольким арендаторам, используйте значок настроек в верхнем меню, чтобы переключиться на арендатора, в котором вы хотите зарегистрировать приложение, из меню Каталоги и подписки.
  3. Перейдите к Identity>Приложения>регистрация приложений и выберите "Новая регистрация".
  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. Поместите созданный файл хранилища ключей в папку ресурсов.

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

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

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

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

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

  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 с помощью браузера.

Важный

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

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

Принцип работы примера

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

Получите 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.*;

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

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

Дальнейшие действия

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