本页面介绍如何使用 Identity-Aware Proxy (IAP) 查询参数和标头来增强应用界面或提供问题排查选项。
查询参数
您可以通过在网址查询字符串中设置 gcp-iap-mode
参数来执行不同的操作。这些查询参数可以包含在任何路径中,而不仅仅是根网址。
传递用户身份
传递以下参数值会返回包含用户身份的 JSON 字典:
YOUR_APP_URL?gcp-iap-mode=IDENTITY
任何已登录的 Google 账号均可提供此信息,即使该账号无权访问应用。您可以直接导航到该网址,也可以引用该网址来向它发出请求。以下是该网址的返回值示例:
{"email":"accounts.google.com:USER_EMAIL","sub":"accounts.google.com:118133858486581853996"}
您可能会发现,这个值对于个性化您的应用(例如通过显示用户的姓名)、将身份传递到其他页面或捕获日志中的使用情况数据非常有用。
清除用户登录
以下参数值会清除 IAP 登录 Cookie:
YOUR_APP_URL?gcp-iap-mode=CLEAR_LOGIN_COOKIE
传递此参数会清除应用的所有 IAP 发出的 Cookie,并将浏览器导航到 YOUR_APP_URL
。如果您的浏览器与应用的身份提供方 (IdP) 之间存在有效的会话,并且 IdP 中仅使用一个账号,则可能会发生静默登录。如果有多个账号处于使用状态,系统会打开一个账号选择页面,以便您切换个人资料。
测试 JWT 验证
IAP 通过将无效的 JWT 传递给测试网页来帮助您测试 JWT 验证逻辑。
例如,对于包含查询参数 gcp-iap-mode=SECURE_TOKEN_TEST
和 iap-secure-token-test-type=SIGNATURE
的任何请求,IAP 会传递包含无效签名的 JWT。您的验证逻辑应该可以捕获无效签名。
您可以将相应的参数附加到请求,从而针对以下任一场景测试验证逻辑。
参数 | 测试用例 |
---|---|
?gcp-iap-mode=SECURE_TOKEN_TEST&iap-secure-token-test-type=NOT_SET | 有效的 JWT。 |
?gcp-iap-mode=SECURE_TOKEN_TEST&iap-secure-token-test-type=FUTURE_ISSUE | 颁发日期设在未来。 |
?gcp-iap-mode=SECURE_TOKEN_TEST&iap-secure-token-test-type=PAST_EXPIRATION | 到期日期设在过去。 |
?gcp-iap-mode=SECURE_TOKEN_TEST&iap-secure-token-test-type=ISSUER | 颁发者错误。 |
?gcp-iap-mode=SECURE_TOKEN_TEST&iap-secure-token-test-type=AUDIENCE | 受众错误。 |
?gcp-iap-mode=SECURE_TOKEN_TEST&iap-secure-token-test-type=SIGNATURE | 使用了不正确的签名者签名。 |
特殊标头
检测 IAP 的响应
当 IAP 生成 HTTP 响应时,例如拒绝访问 (403) 或请求身份验证(302 或 401),则会添加 X-Goog-IAP-Generated-Response
HTTP 响应标头。通过检测此标头是否存在,您可以执行如下操作:
区分 IAP 生成的错误消息和应用生成的错误消息。
检测何时需要将 IAP 凭据添加到请求中。