Spring OAuth2集成Keycloak启动报错:authorizationUri不能为空
核心原因
你的Keycloak OAuth2客户端配置存在两个关键问题:
issuer-uri路径错误:当前配置的http://localhost:8080/realms/sdia3/account是Keycloak用户账户页面地址,并非Realm的OpenID Connect发现端点地址。Spring Security OAuth2客户端依赖issuer-uri自动拉取authorizationUri、tokenUri等核心端点信息,错误路径导致无法获取这些必要URI,直接触发authorizationUri cannot be empty异常。- 缺失客户端身份凭证配置:OAuth2客户端必须配置
client-id和client-secret(Keycloak控制台创建客户端时生成的凭证),否则即使修复issuer-uri,仍会因配置不完整导致启动失败。
解决步骤
1. 修正Keycloak的issuer-uri配置
将application.properties中的Keycloak issuer-uri修改为Realm根地址(移除末尾的/account):
spring.security.oauth2.client.registration.keycloak.issuer-uri=http://localhost:8080/realms/sdia3
Spring Security会自动通过该地址访问/.well-known/openid-configuration端点,自动获取所有必需的OAuth2端点信息。
2. 补充Keycloak客户端身份配置
在application.properties中添加Keycloak客户端的client-id和client-secret(替换为Keycloak控制台生成的实际值):
spring.security.oauth2.client.registration.keycloak.client-id=你的Keycloak客户端ID spring.security.oauth2.client.registration.keycloak.client-secret=你的Keycloak客户端密钥
3. 验证其他客户端配置完整性
检查Google、GitHub的OAuth2客户端配置,确保包含完整的client-id、client-secret、redirect-uri(可使用Spring Boot默认占位符{baseUrl}/login/oauth2/code/{registrationId}),避免其他客户端出现类似配置缺失问题。
4. 重启项目
完成上述配置修正后,重新启动Spring Boot项目,authorizationUri会通过issuer自动发现,启动异常即可解决。
内容的提问来源于stack exchange,提问作者Christophe
相关产品推荐
相关产品推荐

