You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Azure AD身份认证(无门户权限)实现咨询

无需Azure AD门户的Spring Boot身份验证实现方案

核心思路

因为无法访问Azure AD门户,只需向公司AD管理员索要必要的应用注册参数,基于Spring Security OAuth2 Client快速集成微软登录,通过登录结果验证用户是否属于公司Azure AD。


步骤1:向管理员获取以下参数

必须拿到这几个核心配置项(管理员在Azure门户中注册应用后即可提供):

  • client-id:Azure AD中为你的Spring Boot应用分配的唯一ID
  • client-secret:应用的密钥(机密客户端必填)
  • tenant-id:公司Azure AD的租户ID
  • 已在门户中配置好的回调地址(redirect-uri),比如http://localhost:8080/login/oauth2/code/azure

步骤2:添加Spring Security OAuth2依赖

在pom.xml(Maven)中引入OAuth2客户端 starter:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

步骤3:配置应用参数

在application.yml中填入管理员提供的参数(建议用环境变量避免硬编码):

spring:
  security:
    oauth2:
      client:
        registration:
          azure:
            client-id: ${AZURE_CLIENT_ID}
            client-secret: ${AZURE_CLIENT_SECRET}
            scope: openid,profile,email
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            client-name: 公司微软登录
        provider:
          azure:
            authorization-uri: https://login.microsoftonline.com/${AZURE_TENANT_ID}/oauth2/v2.0/authorize
            token-uri: https://login.microsoftonline.com/${AZURE_TENANT_ID}/oauth2/v2.0/token
            user-info-uri: https://graph.microsoft.com/oidc/userinfo
            jwk-set-uri: https://login.microsoftonline.com/${AZURE_TENANT_ID}/discovery/v2.0/keys
            user-name-attribute: name

步骤4:配置Spring Security规则

创建SecurityConfig类,强制所有请求需要认证,并重定向到微软登录页:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
            .oauth2Login(oauth2 -> oauth2.defaultSuccessUrl("/login-success", true));
        return http.build();
    }
}

步骤5:验证登录状态

创建一个简单的控制器,在登录成功后返回用户信息,确认登录结果:

import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class AuthController {

    @GetMapping("/login-success")
    public String confirmLogin(@AuthenticationPrincipal OAuth2User oauth2User) {
        String userName = oauth2User.getAttribute("name");
        String userEmail = oauth2User.getAttribute("email");
        return String.format("登录验证成功!\n用户姓名:%s\n邮箱:%s", userName, userEmail);
    }
}

验证逻辑说明

启动应用后,访问任意页面会自动跳转到公司微软登录界面:

  • 如果是Azure AD内的合法用户,输入公司账号密码后会成功跳转至/login-success页面,显示用户信息,说明验证通过。
  • 如果用户不在公司AD中,微软登录页会直接提示账号不存在或无权限,无需额外判断。

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:48:21