快速入门:向 Java Web 应用添加 Microsoft 登录功能
欢迎使用! 这可能不是你期望看到的页面。 在修复时,此链接应会将你转至正确的文章:
对此造成你的不便,我们深表歉意;感谢你的耐心等待,我们正在努力解决此问题。
在本快速入门中,你将下载并运行一个代码示例,该示例演示 Java Web 应用程序如何让用户登录并调用 Microsoft Graph API。 任何 Microsoft Entra 组织中的用户都可以登录到该应用程序。
有关概述,请参阅示例工作原理关系图。
先决条件
若要运行此示例,需要:
- Java 开发工具包 (JDK) 8 或更高版本。
- Maven。
步骤 1:在 Azure 门户中配置应用程序
若要使用此快速入门中的代码示例:
- 添加回复 URL
https://localhost:8443/msal4jsample/secure/aad
和https://localhost:8443/msal4jsample/graph/me
。 - 创建客户端机密。
应用程序已使用这些属性进行配置。
步骤 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.
在首页上选择“登录”按钮,将用户重定向到 Microsoft Entra ID 并提示他们输入凭据。
用户经过身份验证后,会被重定向到
https://localhost:8443/msal4jsample/secure/aad
。 他们现在已登录,页面将显示有关用户帐户的信息。 示例 UI 包含以下按钮:- 注销:从应用程序中注销当前用户,并将该用户重定向到主页。
- 显示用户信息:获取 Microsoft Graph 的令牌,并使用包含该令牌的请求调用 Microsoft Graph,这将返回有关已登录用户的基本信息。
从 Tomcat 中运行项目
若要将 Web 示例部署到 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); } }
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"/>
打开命令提示符窗口。 转到此示例的根文件夹(pom.xml 位于其中),然后运行
mvn > package
以生成项目。- 此命令将在 /targets 目录中生成一个 msal-web-sample-0.1.0.war 文件 。
- 将此文件重命名为 msal4jsample.war。
- 使用 Tomcat 或任何其他 J2EE 容器解决方案部署 WAR 文件。
- 若要部署 msal4jsample.war 文件,请将其复制到 Tomcat 安装中的 /webapps/ 目录,然后启动 Tomcat 服务器。
部署完文件后,使用浏览器转到 https://localhost:8443/msal4jsample 。
重要
本快速入门应用程序使用客户端机密将自己标识为机密客户端。 由于客户端机密是以纯文本形式添加到项目文件的,因此为了安全起见,建议在生产环境中使用应用程序之前,使用证书来代替客户端机密。 有关如何使用证书的详细信息,请参阅用于应用程序身份验证的证书凭据。
详细信息
示例工作原理
获取 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 应用,请参阅多部分方案系列: