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

Spring Boot OAuth2对接Mock认证服务器的配置问题求助

问题解答

一、该测试架构是否适用于API安全层面的测试?

这个架构完全适用于API安全层面的测试,核心原因如下:

  • 工具适配性:ghcr.io/navikt/mock-oauth2-server是专门为OAuth2/OpenID Connect场景设计的测试工具,支持生成无交互的Bearer令牌,完美匹配自动化测试或本地调试需求。
  • 环境模拟度:认证服务器以独立容器部署,与API服务器处于同一网络,能精准模拟生产环境中服务间的OAuth2交互逻辑,同时避免影响真实认证服务。
  • 覆盖核心场景:可验证API服务器的JWT令牌校验、权限控制等核心安全逻辑,包括令牌有效性、签名验证、issuer合法性校验等关键环节。

二、解决"Could not obtain the keys"(含401错误)的配置问题

从堆栈信息和你的配置来看,API服务器请求认证服务器的JWKS端点时被拒绝(401),核心原因是mock-oauth2-server默认限制了JWKS端点的未授权访问,或配置存在冲突。以下是具体修复步骤:

1. 调整认证容器配置,允许未授权访问JWKS端点

修改AuthorizationContainer,添加环境变量开启公开JWKS端点的权限:

public class AuthorizationContainer extends GenericContainer<AuthorizationContainer> {
    private static final DockerImageName AUTHORIZATION_IMAGE = DockerImageName.parse("ghcr.io/navikt/mock-oauth2-server:2.0.0");
    private static final int APP_PORT = 8080;
    
    public AuthorizationContainer() {
        super(AUTHORIZATION_IMAGE);

        addFixedExposedPort(APP_PORT, APP_PORT);
        // 添加环境变量,允许未授权访问JWKS端点
        addEnv("MOCK_OAUTH2_SERVER_ALLOW_UNAUTHORIZED_JWKS", "true");
        waitingFor(Wait.forHttp("/isalive").forStatusCode(200));
    }
}

2. 优化API服务器的application.yml配置

移除冗余的jwk-set-uri配置,Spring Security会自动通过issuer-uri对应的.well-known/openid-configuration端点发现JWKS地址,避免手动配置冲突:

spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          issuer-uri: http://localhost:8080/default

3. 验证令牌生成与校验流程

容器启动后,可通过curl获取无交互令牌(示例参数,具体可参考mock-oauth2-server官方文档):

# 获取客户端凭证模式的Bearer令牌
curl -X POST http://localhost:8080/default/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials&client_id=test-client&client_secret=test-secret"

将返回的access_token作为Bearer令牌请求API服务器,验证是否能正常通过校验。

额外检查点

  • 确认容器启动无报错,访问http://localhost:8080/default/.well-known/openid-configuration能正常返回OpenID配置信息。
  • 若API服务器也以容器部署,需使用认证容器的名称(而非localhost)作为issuer-uri的地址,确保同一Docker网络内的服务发现正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:32:49