本文介绍如何开发支持 Microsoft Entra 帐户登录的 Spring Web 应用。 完成本文中的所有步骤后,Web 应用会在匿名访问时重定向到Microsoft Entra登录页。 以下屏幕截图显示了 Microsoft Entra 登录页面:
先决条件
若要完成本文中的步骤,需要满足以下先决条件:
- 一个受支持的 Java 开发工具包 (JDK)。 有关在 Azure 上进行开发时可供使用的 JDK 的详细信息,请参阅 Azure 和 Azure Stack 上的 Java 支持。
- Apache Maven 版本 3.0 或更高版本。
- Azure 订阅。 如果没有 Azure 订阅,可以创建一个免费帐户。
重要
要完成本文中的步骤,需要 Spring Boot 版本 2.5 或更高版本。
使用 Spring Initializr 创建应用
指定要生成具有Java的 Maven 项目。 输入应用程序的 组 和 项目 名称。
为 Spring Web 和 OAuth2 客户端添加依赖项。
在页面底部,选择生成按钮。
出现提示时,将项目下载到本地计算机上的某个路径中。
添加Microsoft Entra 依赖项
将下载的项目文件解压缩到本地计算机上的目录。
在文本编辑器中打开 pom.xml 文件。
将 Spring Cloud Azure材料清单(BOM)添加到该
<dependencyManagement>部分。<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.4.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>将 Spring Cloud Azure Starter Microsoft Entra依赖项添加到
<dependencies>该部分。<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-active-directory</artifactId> </dependency>保存并关闭 pom.xml 文件。
创建 Microsoft Entra 实例
如果你是现有实例的管理员,则可以跳过该过程。
依次选择所有服务、标识、Microsoft Entra ID。
输入组织名称和初始域名。 复制目录的完整 URL。 在本教程中,你将使用 URL 来添加用户帐户。 (例如:
azuresampledirectory.onmicrosoft.com。)复制目录的完整 URL。 在本教程中,你将使用 URL 来添加用户帐户。 (例如:
azuresampledirectory.onmicrosoft.com。)。完成后,请选择创建。 创建新资源将需要几分钟时间。
完成后,选择显示的链接来访问新目录。
复制租户 ID。 稍后在本教程中,您将使用 ID 值来配置 application.properties 文件。
为 Spring Boot 应用添加应用程序注册
在门户菜单中,选择应用注册,然后选择注册应用程序。
选择应用程序,然后选择注册。
应用注册页面出现时,复制 应用程序(客户端)ID 和 租户 ID。 使用这些值在本教程的后面部分配置 application.properties 文件。
在导航窗格中选择 证书 & 密钥。 然后,选择新建客户端机密。
在过期列表中添加说明并选择持续时间。 选择 添加。 将自动填充密钥的值。
复制并保存客户端密码的值以配置本教程后面的 application.properties 文件。 (以后无法检索此值。
在应用注册的主页中,选择身份验证,然后选择添加平台。 然后选择 Web 应用程序。
对于新重定向 URI,请输入
http://localhost:8080/login/oauth2/code/,然后选择配置。如果修改了 pom.xml 文件以使用低于 3.0.0 的Microsoft Entra初学者版本:在隐式授予和混合流下,请选择 ID 令牌(用于隐式和混合流),然后选择“保存”。
添加用户帐户并分配Microsoft Entra应用角色
在Microsoft Entra ID 租户的“ 概述 ”页中,选择“ 用户”,然后选择“ 新建用户”。
显示用户面板时,输入用户名和名称。 然后选择“创建”。
注意
输入用户名时,你需要指定本教程前面部分中的目录 URL。 例如:
test-user@azuresampledirectory.onmicrosoft.com在应用注册的主页中,选择 “应用角色”,然后选择“ 创建应用角色”。 提供窗体字段的值,选择“ 是否要启用此应用角色?”,然后选择“ 应用”。
从 Microsoft Entra 目录的概述页中,选择企业应用程序。
选择 “所有应用程序”,然后选择在上一步骤中添加了应用角色的应用程序。
依次选择“用户和组”和“添加用户/组”。
在用户下,单击未选择。 选择之前创建的用户,选择 “选择”,然后选择“ 分配”。 如果以前创建了多个应用角色,请选择一个角色。
返回到 “用户 ”面板,选择测试用户,然后选择 “重置密码”。 复制密码。 在本教程的后面部分登录到应用程序时,请使用密码。
配置和编译你的应用
从本教程前面创建和下载的项目存档中将文件提取到目录中。
转到项目中 的 src/main/resources 文件夹,然后在文本编辑器中打开 application.properties 文件。
使用之前创建的值指定应用注册的设置。 例如:
# Enable related features. spring.cloud.azure.active-directory.enabled=true # Specifies your Microsoft Entra ID tenant ID: spring.cloud.azure.active-directory.profile.tenant-id=<tenant-ID> # Specifies your App Registration's Application ID: spring.cloud.azure.active-directory.credential.client-id=<client-ID> # Specifies your App Registration's secret key: spring.cloud.azure.active-directory.credential.client-secret=<client-secret>其中:
参数 说明 spring.cloud.azure.active-directory.enabled启用由 spring-cloud-azure-starter-active-directory. 提供的功能。spring.cloud.azure.active-directory.profile.tenant-id包含前面提到的 Microsoft Entra ID 租户的 租户 ID。 spring.cloud.azure.active-directory.credential.client-id包含你之前完成的应用注册中的应用程序 ID。 spring.cloud.azure.active-directory.credential.client-secret包含你之前完成的应用注册密钥中的值。 保存并关闭 application.properties 文件。
在应用程序的 Java 源文件夹中创建一个名为控制器的文件夹。 例如:src/main/java/com/wingtiptoys/security/controller。
在控制器文件夹中创建一个名为 HelloController.java 的新 Java 文件,并在文本编辑器中打开它。
输入以下代码,然后保存并关闭该文件:
package com.wingtiptoys.security; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.security.access.prepost.PreAuthorize; @RestController public class HelloController { @GetMapping("Admin") @ResponseBody @PreAuthorize("hasAuthority('APPROLE_Admin')") public String Admin() { return "Admin message"; } }
生成并测试你的应用
打开命令提示符并将目录更改为应用 pom.xml 文件所在的文件夹。
使用 Maven 生成 Spring Boot 应用程序,然后运行该程序。 例如:
mvn clean package mvn spring-boot:run在 Maven 生成并启动应用程序后,在 Web 浏览器中打开
http://localhost:8080/Admin。 系统会提示输入用户名和密码。
注意
如果这是新用户帐户的第一次登录,系统可能会提示你更改密码。
成功登录后,可以看到控制器中的示例“管理员消息”文本。
总结
在本教程中,你将使用Microsoft Entra初学者、配置新的Microsoft Entra租户、在租户中注册新应用程序,然后将应用程序配置为使用 Spring 批注和类来保护 Web 应用,从而创建新的Java Web 应用程序。
另请参阅
- 有关新的 UI 选项的信息,请参阅新的Azure门户应用注册培训指南。
后续步骤
若要了解有关 Spring 和 Azure 的详细信息,请继续访问“Azure 上的 Spring”文档中心。