识别经过身份验证的Google用户的“工作帐户”

时间:2016-03-29 16:27:50

标签: authentication oauth-2.0 google-oauth

我们有一个学习管理系统(LMS),我们将其推广到组织。所有用户都位于“组织帐户”下,我们的系统上有几千个“组织帐户”。

我们的一位客户使用Google作为其主要帐户/身份验证系统,因此我们正在实施 OAuth2 作为为这些客户提供单点登录的方法。

我已经为我们的平台创建了一个Google项目,并且可以成功使用Google让用户使用https://accounts.google.com/o/oauth2/auth范围以标准方式验证(openid email profile)。假设用户通过Google进行身份验证,那么我可以恢复访问令牌。

我的问题是,返回的声明列表不足以让我确定Google帐户所属的组织。我认为“托管域名”声明可能唯一地将谷歌帐户识别为我们客户的工作帐户,但是如果用户使用别名电子邮件地址登录而不是工作的“主电子邮件”地址,则托管域将不正确。

我需要一种方法来发现经过身份验证的Google帐户属于哪个“工作帐户”,以便我可以将其映射到我平台上的正确组织。

一个例子可以帮助我思考:

  1. 我们的客户名为“ABC Ltd”
  2. 他们有一个Google工作帐户,每个人的主要电子邮件地址(域名)都是“... @ abc.com”。用户还有电子邮件别名(“... @ anotherdomain.com”,“... @ gmail.com”等)
  3. 如果用户验证为“john@abc.com”,则“托管域名”声明将返回“abc.com”,我们可以识别用户和工作帐户(yay)
  4. 但是,如果使用电子邮件别名进行身份验证(例如“john@gmail.com”),托管域名将返回(空白)或“gmail.com”而不是“abc.com”。我似乎也无法访问他们的主电子邮件地址“john@abc.com”(失败)。
  5. 有关如何发现经过身份验证的用户的“工作帐户”的任何建议?其他一些“范围”要求?还是一个不同的API?

    感谢。

1 个答案:

答案 0 :(得分:0)

  

如果用户通过" john@abc.com"进行身份验证,那么"托管域名"要求   回归" abc.com"我们可以识别用户和工作   帐户(yay)

     

但是,如果使用电子邮件别名进行身份验证,则表明他们拥有此类别   as" john@gmail.com"托管域名返回为(空白)或   " gmail.com"而不是" abc.com"。我似乎也无法访问他们的   主电子邮件地址" john@abc.com" (失败)。

对于"工作帐户",用户无法将gmail.com地址作为别名获取。 Gmail不支持此功能。 john@abc.com和john@gmail.com是独立的帐户。因此该功能按设计工作。不知道你在哪里得到了#34;别名"信息,但发生的是我们支持多登录。用户可以同时登录多个帐户,并可以在它们之间轻松切换。当他们第一次通过Oauth批准时,他们可以选择他们想要的帐户。下次,它取决于oauth请求参数。

如果您知道用户尝试登录的网站的托管域名,则可以将该hd = abc.com传递给Google身份验证请求,并选择正确的帐户。