Cloud Run配置IAP后OAuth授权重定向至根路径问题排查
我有两个Cloud Run服务,分别部署在根路径/和/admin路径下。通过HTTP全局负载均衡使用自定义域名,希望用IAP保护/admin路径(/路径为公开访问,未启用IAP)。已配置后端服务启用IAP,但完成OAuth授权同意屏幕流程后,会被重定向至根路径,进入未启用IAP的后端服务。此时根路径URL带有?gcp-iap-mode=AUTHENTICATING&redirect_token_v2=...这类查询参数,IAP本应检查该参数并在自定义域名下生成Cookie。在控制台IAP页面,点击后端服务的Go to OAuth configuration选项,进入后重定向相关选项均为禁用状态,页面顶部提示This automatically generated OAuth client ID is required for your project. It can't be modified.。请问我遗漏了哪些配置?
修正负载均衡路由规则优先级与匹配范围
确保HTTP全局负载均衡的路径路由规则中,/admin/*的路由优先级高于根路径/*,且/admin的路由明确匹配所有子路径(使用/admin/*而非仅/admin)。如果路由规则重叠或优先级错误,授权后的流量会被错误转发到根路径的后端服务,导致重定向异常。替换自动生成的OAuth客户端ID为手动创建的版本
自动生成的IAP OAuth客户端确实无法修改重定向配置,这是核心问题。解决步骤:- 进入Google Cloud控制台的「API和服务」→「凭据」页面,创建新的「OAuth客户端ID」,应用类型选择「Web应用」。
- 在「已授权的重定向URI」中添加自定义域名下的IAP回调路径:
https://<你的自定义域名>/admin/_gcp_iap/redirect(替换为实际域名)。 - 返回IAP页面,找到保护
/admin的后端服务,编辑IAP配置,将OAuth客户端ID替换为刚创建的新ID。
确认IAP Cookie的域名绑定
使用手动创建的OAuth客户端时,重定向URI使用自定义域名,会让IAP在你的自定义顶级域名下生成会话Cookie,确保授权后IAP能正确识别会话,避免因Cookie域名不匹配导致的错误重定向。检查Cloud Run服务的身份验证设置
确保/admin路径对应的Cloud Run服务已关闭「允许未经身份验证的调用」,仅允许通过IAP身份验证的请求访问;根路径的服务保持「允许未经身份验证的调用」开启,确保公开访问正常。
内容的提问来源于stack exchange,提问作者Jaap

