快速入门:向 Java Web 应用添加 Microsoft 登录功能

欢迎使用! 这可能不是你期望看到的页面。 在修复时,此链接应会将你转至正确的文章:

快速入门:向 Java Web 应用添加 Microsoft 登录功能

对此造成你的不便,我们深表歉意;感谢你的耐心等待,我们正在努力解决此问题。

在本快速入门中,你将下载并运行一个代码示例,该示例演示 Java Web 应用程序如何让用户登录并调用 Microsoft Graph API。 任何 Microsoft Entra 组织中的用户都可以登录到该应用程序。

有关概述,请参阅示例工作原理关系图

先决条件

若要运行此示例,需要:

步骤 1:在 Azure 门户中配置应用程序

若要使用此快速入门中的代码示例:

  1. 添加回复 URL https://localhost:8443/msal4jsample/secure/aadhttps://localhost:8443/msal4jsample/graph/me
  2. 创建客户端机密。

Already configured 应用程序已使用这些属性进行配置。

步骤 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

将生成的 keystore 文件放在“resources”文件夹中。

注意

Enter_the_Supported_Account_Info_Here

步骤 3:运行代码示例

若要运行项目,请执行以下步骤之一:

  • 使用嵌入式 Spring Boot 服务器直接从 IDE 运行它。
  • 使用 Maven 将其打包为 WAR 文件,然后将其部署到 J2EE 容器解决方案,如 Apache Tomcat
从 IDE 中运行项目

若要从 IDE 运行 Web 应用,请选择“运行”,然后转到项目的主页。 对于本示例,标准主页 URL 为 https://localhost:8443.

  1. 在首页上选择“登录”按钮,将用户重定向到 Microsoft Entra ID 并提示他们输入凭据。

  2. 用户经过身份验证后,会被重定向到 https://localhost:8443/msal4jsample/secure/aad。 他们现在已登录,页面将显示有关用户帐户的信息。 示例 UI 包含以下按钮:

    • 注销:从应用程序中注销当前用户,并将该用户重定向到主页。
    • 显示用户信息:获取 Microsoft Graph 的令牌,并使用包含该令牌的请求调用 Microsoft Graph,这将返回有关已登录用户的基本信息。
从 Tomcat 中运行项目

若要将 Web 示例部署到 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. Tomcat 的默认 HTTP 端口是 8080,但需要通过端口 8443 建立 HTTPS 连接。 配置此设置:

    • 转到 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。
    • 使用 Tomcat 或任何其他 J2EE 容器解决方案部署 WAR 文件。
      • 若要部署 msal4jsample.war 文件,请将其复制到 Tomcat 安装中的 /webapps/ 目录,然后启动 Tomcat 服务器。
  4. 部署完文件后,使用浏览器转到 https://localhost:8443/msal4jsample 。

重要

本快速入门应用程序使用客户端机密将自己标识为机密客户端。 由于客户端机密是以纯文本形式添加到项目文件的,因此为了安全起见,建议在生产环境中使用应用程序之前,使用证书来代替客户端机密。 有关如何使用证书的详细信息,请参阅用于应用程序身份验证的证书凭据

详细信息

示例工作原理

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

获取 MSAL

MSAL for Java (MSAL4J) 是一个 Java 库,用于用户登录和请求令牌,此类令牌用于访问受 Microsoft 标识平台保护的 API。

你可以通过对 > 应用程序的 pom.xml (Maven) 或 build.gradle (Gradle) 文件进行以下更改,以使用 Maven 或 Gradle 将 MSAL4J 添加到应用程序,从而管理依赖项。

在 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

通过将以下代码添加到要在其中使用 MSAL4J 的文件的开头,来添加对 MSAL for Java 的引用:

import com.microsoft.aad.msal4j.*;

帮助和支持

如果需要帮助、需要报告问题,或者需要详细了解支持选项,请参阅面向开发人员的帮助和支持

后续步骤

若要深入了解如何生成在 Microsoft 标识平台上将用户登录的 Web 应用,请参阅多部分方案系列: