SpringBoot+Pac4J集成OKTA OIDC遇HTTP 400错误,求助配置
问题分析与解决方案
你的问题核心在于OKTA端配置与Pac4J客户端的redirect URI不匹配,同时OKTA的登录起始地址配置错误,导致OKTA无法识别合法回调地址,返回400错误。
1. 修正OKTA端配置
调整OKTA的参数为以下内容,确保和代码配置完全对齐:
Sign-in redirect URIs = http://localhost:8080/callback
这个地址必须和你Pac4J代码里oidcClient.setCallbackUrl("http://localhost:8080/callback")完全一致,是OKTA登录成功后跳转回应用的回调地址。Initiate login URI = http://localhost:8080/oidc
这是触发登录流程的起始地址,也就是你实际访问的入口路径。Sign-out redirect URIs = http://localhost:8080(该配置可保持不变)
2. 调整拦截器路径匹配规则
你当前的拦截器配置是:
registry.addInterceptor(buildInterceptor("OidcClient")).addPathPatterns("/oidc/*");
但你访问的是localhost:8080/oidc(不带子路径后缀),这个路径不会被/oidc/*匹配到。需要修改为:
registry.addInterceptor(buildInterceptor("OidcClient")).addPathPatterns("/oidc");
如果需要匹配/oidc下的所有子路径,可改用/oidc/**。
3. 验证OIDC元数据地址
确认你的Discovery URI格式正确,OKTA默认的OIDC元数据地址格式为https://{你的OKTA域名}/oauth2/default/.well-known/openid-configuration,你当前配置的地址看起来符合规范,可以通过浏览器访问该地址,确认是否能返回正常的JSON格式元数据。
完成以上调整后,重启应用并访问localhost:8080/oidc,应该会正常跳转到OKTA登录页,登录成功后通过/callback回调,最终跳转至目标页面。
内容的提问来源于stack exchange,提问作者David Sissoko
相关产品推荐
相关产品推荐

