1

Metabase有一个开放的功能请求来支持 IAP。我尝试了一下,并使用 Clojure 实现了使用签名标头保护您的应用程序中详述的步骤(即验证令牌标头、验证令牌有效负载、检索用户身份)。

但这个问题不一定特定于元数据库。总体思路是替换 Google Sign-In,并且仅使用 IAP 签名的标头在 Google App Engine 上的应用程序(特别是 GAE flex 环境)中进行身份验证和用户创建。

“问题”是来自 IAP 令牌的用户身份信息如下所示{"email":"alice@example.com","sub":"accounts.google.com:118133858486581853996"}:我也遇到了Using special URLs,但这会返回类似:{"email":"accounts.google.com:USER_EMAIL","sub":"accounts.google.com:118133858486581853996"}

使用 Google 登录令牌,我可以获取given_namefamily_name的值email,这意味着我可以获取或创建有效的元数据库用户。sub有没有办法通过 JWT (即)获取名字和姓氏accounts.google.com:118133858486581853996

4

1 回答 1

1

嗯,如果他们有公开的个人资料,您可以将“accounts.google.com:”后面的数字传递给https://developers.google.com/+/web/api/rest/latest/people/get。不幸的是,您将无法以用户身份对该 API 进行身份验证,因为 IAP 目前不提供一种调用方式,让用户委托访问以调用 Google API。(您必须使用服务帐户来调用该 API。)

另一种解决方案是,如果 IAP 提供了一种方法来 a) 在其对 Google 的 OAuth 请求中指定其他范围,然后 b) 将 OIDC 令牌中的其他声明传递到 IAP JWT,您将能够配置 IAP请求“配置文件”范围。但是,IAP 目前只请求“email”和“openid”范围,并且没有指定额外范围的机制。

-- Matthew,谷歌云 IAP 工程

于 2018-06-11T17:02:16.697 回答