Краткое руководство. Добавление возможности входа в веб-приложение Java с помощью учетной записи Майкрософт

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

Чтобы получить общие сведения см. схему, демонстрирующую принцип работы примера.

Предварительные требования

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

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

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

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

  1. Откройте страницу регистрации приложений на портале Azure и приступите к работе.
  2. Введите имя приложения и нажмите кнопку Зарегистрировать.
  3. Следуйте инструкциям на экране, чтобы скачать автоматически настроенный код приложения.

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

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

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

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

Шаг 1. Настройка приложения на портале Azure

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

  1. Добавьте URL-адреса ответа https://localhost:8443/msal4jsample/secure/aad и https://localhost:8443/msal4jsample/graph/me.
  2. Создайте секрет клиента.

Уже настроено. Ваше приложение настроено с помощью этих атрибутов.

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

Скачайте проект и извлеките ZIP-файл в папку рядом с корнем диска. Например, в C:\Azure-Samples.

Чтобы использовать протокол 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.

Примечание

Enter_the_Supported_Account_Info_Here

Шаг 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 — это значение идентификатора каталога (арендатора) приложения, которое вы зарегистрировали.
  4. Чтобы использовать протокол 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
    
  5. Поместите созданный файл хранилища ключей в папку resources.

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

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

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

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

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

  1. На основной странице нажмите кнопку Вход для перенаправления пользователей в Azure Active Directory и запрашивания у них учетных данных.

  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 для сборки проекта.

    • С помощью этой команды в каталоге /targets будет создан файл msal-web-sample-0.1.0.war.
    • Переименуйте этот файл в msal4jsample.war.
    • Разверните этот WAR-файл с помощью Tomcat или любого другого решения J2EE для контейнеров.
      • Чтобы развернуть файл msal4jsample.war, скопируйте его в каталог /webapps/ в своей установке Tomcat, а затем запустите сервер Tomcat.
  4. После развертывания файла перейдите по адресу 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.*;

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

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

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

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