Keycloak客户端跨Origin验证问题:E2E测试调用后端失败求助
问题:Keycloak E2E测试跨Origin验证失败解决方案
背景
我有一个Keycloak客户端sample-application,其valid-redirect-uri配置为https://sample-application.mycompany(对应生产前端服务)。前端调用后端服务时会在HTTP头中携带JWT令牌,后端通过校验JWT中的allowed-origins字段做Origin验证,生产环境因为https://sample-application.mycompany在列表内,运行正常:
"allowed-origins": [ "https://sample-application.mycompany" ]
问题场景
E2E测试时,从http://jenkins.mycompany调用该后端服务,虽然持有合法JWT,但由于http://jenkins.mycompany不在allowed-origins列表中,后端验证失败。
已尝试的方案
- 给生产客户端添加额外的
valid-redirect-urihttp://jenkins.mycompany——拒绝,不想给生产客户端混入测试配置 - 复制客户端为
sample-application-testing,添加测试用valid-redirect-uri,测试后删除——可行但需要额外操作 - 用服务器私钥生成包含
http://jenkins.mycompany的JWT——后端验证不通过 - 修改请求的
Origin头——浏览器同源策略限制,无法实现
疑问
是否有其他更优的可行方案?
补充说明:该Origin验证逻辑来自keycloak-spring-boot-starter,具体是在AuthenticatedActionsHandler类的第126行,检查请求的Origin头是否在JWT的allowed-origins列表中。
内容的提问来源于stack exchange,提问作者Shadov
相关产品推荐
相关产品推荐

