如何配置Quarkus OIDC使用外部负载均衡地址作为绝对重定向URI
Quarkus OIDC通过外部负载均衡访问时重定向URI异常问题
问题背景
- 服务架构:一组
QuarkusPod前端部署了云负载balancer/virtual server/firewall作为反向代理,公网流量通过该入口转发至内部网络 - 身份认证方案:使用Azure B2C实现应用登录
异常表现
直接访问Pod或内部负载均衡时功能运行正常,通过外部负载均衡访问时,重定向URI被设置为公网侧无法访问的内部网络地址:
正常访问场景
- 直接访问Pod:
https://pod1:8080 - 访问内部负载均衡:
https://internal-load-balancer:8080
异常访问场景
- 访问外部负载均衡:
https://external-load-balancer:8080
该场景下重定向URI指向内部负载均衡地址
internal-load-balancer,公网侧无法访问
疑问点
- 能否将重定向URI设置为外部服务的绝对URI而非相对路径?官方文档明确说明重定向路径为相对路径,未找到自定义重定向URI的方法
- 自定义绝对重定向URI的方案在安全层面是否完全不可行?
- 有没有比重新配置外部负载均衡更快速的调整方法?其他开发框架支持类似操作
补充信息
当前使用授权码流,quarkus-oidc会自动将重定向URL设置为相对路径,不清楚是否可直接将重定向URI覆盖为外部负载均衡地址
解决方案
配置x-forwarded/反向代理读取原始请求源即可解决该问题。
内容的提问来源于stack exchange,提问作者kevin.conner
相关产品推荐
相关产品推荐

