仅向 Google 网站登录请求“openid”范围

Posted

技术标签:

【中文标题】仅向 Google 网站登录请求“openid”范围【英文标题】:Request only 'openid' scope from Google Sign-In for Websites 【发布时间】:2019-09-09 16:45:33 【问题描述】:

我正在将 Google 登录集成到我的网络应用中,但无论我指定什么,它总是在登录流程中显示警告:

要继续,Google 将与 [应用名称] 分享您的姓名、电子邮件地址和个人资料照片。

我不需要也不想要我的用户的姓名、电子邮件地址或个人资料照片;我只需要一个token_id。我知道similar question 开发人员只需要电子邮件地址,并且解释说其他详细信息无论如何都可以从电子邮件地址派生,但在这种情况下我也不想要电子邮件地址。

按照我设置的documentation:

function login() 
  gapi.auth2.init(
    client_id: myClientIdHere,
    cookie_policy: 'none',
    fetch_basic_profile: false,    // <-- remove basic profile
    scope: 'openid',               // <-- request only openid
    ux_mode: 'redirect', // <-- using redirect to avoid popup blocker issues
    redirect_uri: myRedirectUriHere,
  ).then((GoogleAuth) => 
    GoogleAuth.signIn() // [etc]
  );


function init() 
  gapi.load('auth2', login);

检查网络请求表明这是将用户引导至:

https://accounts.google.com/o/oauth2/auth?redirect_uri=[myRedirectUri]&response_type=permission%20id_token&scope=openid&openid.realm=&client_id=[myClientId]&ss_domain=[myDomain]&fetch_basic_profile=false&gsiwebsdk=2

这看起来是正确的。我已经尝试调整该 URL 并手动导航到它,无论我更改什么,它似乎总是显示警告。

在我的 Google API 控制台项目下的凭据 -> OAuth 同意屏幕 -> Google API 的范围内,我可以看到“电子邮件”、“个人资料”和“openid”都列出来了,我找不到任何选项删除它们。

我不知道它是否真的在用户登录时向我发送了该信息,但我想从登录屏幕中删除警告。

如何使用 Google 登录进行登录?如何防止它向我提供个人资料/电子邮件地址信息?

【问题讨论】:

你找到解决方案了吗?我也有同样的要求 @Kiran 不,不使用 Google 登录。除非您与 Google 绑定,否则您可能需要考虑查看其他 OAuth 提供程序。 【参考方案1】:

当您从 Google 获取访问令牌时,您可以调用 userinfo 端点并使用 openid 范围获取用户个人资料信息,因此即使您不需要电子邮件和个人资料信息,您仍然可以通过以下方式获取该信息用户信息端点 [1]。

[1]https://developers.google.com/identity/protocols/OpenIDConnect#obtaininguserprofileinformation

【讨论】:

不能为我的应用禁用此功能吗?由于我只需要一个 token_id,另一种选择是完全阻止为我的应用程序创建访问令牌(该端点需要访问令牌)。我想一定有办法,因为这对于像谷歌这样的大公司来说是相当有漏洞的。 如果您指的是 ID 令牌,它包含电子邮件 ID、姓名和头像信息 [1]。 [1]developers.google.com/identity/protocols/… 我检查了我收到的 ID 令牌,它们不包含大部分信息(我猜是因为我没有要求它)。令牌包含:isssubazpaudiatexpnonce

以上是关于仅向 Google 网站登录请求“openid”范围的主要内容,如果未能解决你的问题,请参考以下文章

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

托管应用程序的 Google 联合登录 (OpenID+Oauth) - 更改端点?

仅从Google Signs In for Websites请求“openid”范围

将 OpenID 委托给 Google(不是 Google Apps)

如何向启用 OpenID 的站点添加注销功能?

小米范工具系列之八:小米范越权漏洞检测工具