通过Postman访问受IAP保护的Cloud Run内部API遇JWT解析问题
解决Postman调用IAP保护的Cloud Run API时的JWT解析错误问题
核心问题:你获取的ya28.a0...格式令牌是OAuth2 Access Token,但IAP要求的是OpenID Connect ID Token,二者格式与用途不同,导致解析失败。
步骤1:调整Postman OAuth2配置以获取ID Token
- 授权类型选择「Authorization Code」
- 回调URL填写Postman默认值:
https://oauth.pstmn.io/v1/callback(需提前在GCP OAuth2客户端的「已授权的重定向URI」中添加此地址) - 授权URL:
https://accounts.google.com/o/oauth2/v2/auth - 令牌URL:
https://oauth2.googleapis.com/token - 客户端ID/密钥:使用GCP中创建的Web应用类型OAuth2客户端ID(不要用桌面应用等其他类型)
- 范围必填:
openid email(IAP仅验证ID Token中的身份信息,无需额外API权限范围) - 开启「Request OpenID Connect ID Token」选项(Postman OAuth2配置的高级设置中可找到)
步骤2:验证令牌格式
正确的ID Token是JWT格式,由三段Base64编码字符串用.分隔(例如eyJhbGciOiJSUzI1NiIsImtpZCI6...),而非ya28.a0...格式的Access Token。可通过JWT解码工具确认令牌包含aud字段,其值需与IAP保护的Cloud Run资源对应的客户端ID一致(该ID可在GCP IAP控制台的资源详情中查看)。
步骤3:正确携带令牌发起请求
在Postman的请求头中添加:
Authorization: Bearer <你的ID Token>
若使用Postman自动授权功能,需确保工具选择的是ID Token而非Access Token(部分版本需手动切换令牌类型)。
额外检查项
- 确认你的账号已被添加至IAP资源的「IAP-secured Web App User」权限列表
- 若为内部API,确认IAP设置中未限制仅特定域/组织账号访问
- 检查GCP OAuth2客户端的重定向URI是否包含Postman的回调地址,避免授权流程出错
内容的提问来源于stack exchange,提问作者Flamingow
相关产品推荐
相关产品推荐

