如何为Cloud Run蓝绿部署的动态URL配置OAuth 2.0重定向?
针对Cloud Run蓝绿部署+Entra ID OAuth的重定向URL解决方案
1. 固定测试域名+反向代理中转
给测试用的green版本配置一个固定的测试域名(比如test-auth.yourdomain.com),通过反向代理将固定域名请求映射到动态生成的green版本URL:
- 每次部署green版本时,同步更新Cloud Load Balancer或Cloudflare Workers的转发规则,把固定测试域名的流量转发到当前green版本的动态地址
- 提前在Entra ID应用注册中配置好这个固定域名的回调URL(例如
https://test-auth.yourdomain.com/oauth/callback) - Cypress测试直接使用该固定域名访问green版本,OAuth认证完成后,Entra ID会重定向到固定域名的回调地址,再由代理转发回green版本完成后续认证流程
2. SPA场景:本地回调+测试拦截跳转
如果你的应用是单页应用,可调整为前端PKCE授权流:
- 在Entra ID应用注册里预先添加
http://localhost:3000/callback作为重定向URL(Entra ID允许SPA使用localhost地址) - Cypress测试时,启动一个本地代理服务监听3000端口,当收到Entra ID的回调请求后,提取授权码,再自动跳转到当前green版本的动态回调URL,完成token交换
- 全程不需要修改Entra ID的配置,所有动态映射在测试环节内部处理
3. 轻量授权中转服务
搭建一个固定的中间服务作为OAuth认证的中转节点:
- 提前在Entra ID中配置中间服务的固定URL作为重定向地址(比如
https://auth-proxy.yourdomain.com/callback) - green版本发起OAuth请求时,将
redirect_uri设为中间服务的URL,同时把当前green版本的动态回调地址放到state参数里携带 - 中间服务收到Entra ID的回调后,提取授权码和
state里的动态地址,再把授权码转发到green版本的动态回调URL,完成后续认证 - 这个中转服务可以部署成Cloud Run的固定服务,不需要随每次构建更新
4. 调整蓝绿部署流程,复用固定green域名
修改CI/CD流程,放弃动态标签生成URL,改用固定的green测试域名:
- 每次部署green版本时,直接替换
green.yourdomain.com指向的Cloud Run版本(通过Cloud Run流量分配或DNS记录更新实现) - 提前在Entra ID中配置
https://green.yourdomain.com/oauth/callback作为重定向URL - 这样所有green版本都使用固定域名,不需要修改Entra ID配置,测试通过后再切换流量到blue版本
内容的提问来源于stack exchange,提问作者Brian K
相关产品推荐
相关产品推荐

