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

Azure AD认证的Spring Cloud端点:浏览器可访问Postman请求失败

问题分析与解决方案

核心原因

你的Spring Cloud Azure AD配置默认启用的是交互式认证模式(适配浏览器会话登录),而非API资源服务器模式,所以应用只会识别浏览器的会话Cookie,不会解析请求头里的Bearer Token,导致Postman带Token请求仍触发重定向登录流程。

具体修复步骤

1. 修改application.properties配置,开启资源服务器模式

添加配置切换到API保护模式,让应用支持Bearer Token验证:

spring:
  cloud:
    azure:
      active-directory:
        resource-server:
          enabled: true
          jwt:
            issuer-uri: https://login.microsoftonline.com/${spring.cloud.azure.active-directory.profile.tenant-id}/v2.0

完整配置示例:

server:
  forward-headers-strategy: native
  port: 9191

spring:
  cloud:
    azure:
      active-directory:
        enabled: true
        profile:
          tenant-id: TENANTID
        credential:
          client-id: CLIENTID
          client-secret: CLIENTSECRET
        resource-server:
          enabled: true
          jwt:
            issuer-uri: https://login.microsoftonline.com/${spring.cloud.azure.active-directory.profile.tenant-id}/v2.0

2. 确保获取的Access Token符合要求

  • 申请Token时,受众(aud)必须匹配你的应用Client ID(或应用暴露的API范围)
  • 若使用客户端凭证流程,需确保Azure AD中已给你的应用分配访问该API的权限
  • 可通过解析Token(比如本地解码工具)检查aud和iss字段是否与配置的issuer-uri匹配

3. 规范Postman请求格式

  • 请求头必须严格设置为:Authorization: Bearer <你的完整AccessToken>
  • 确保Token无截断、无多余空格或特殊字符

4. 自定义安全配置(如有需要)

如果应用有自定义Spring Security配置,需确保放行Token验证逻辑,示例代码:

@Configuration
@EnableWebSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
            .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()));
        return http.build();
    }
}

测试验证

修改配置重启应用后,用Postman重新获取符合要求的Token并添加Authorization头请求端点,应能正常返回"Hello"字符串,状态码200且无重定向。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:52:18