我们有一个学习管理系统(LMS),我们将其推广到组织。所有用户都位于“组织帐户”下,我们的系统上有几千个“组织帐户”。
我们的一位客户使用Google作为其主要帐户/身份验证系统,因此我们正在实施 OAuth2 作为为这些客户提供单点登录的方法。
我已经为我们的平台创建了一个Google项目,并且可以成功使用Google让用户使用https://accounts.google.com/o/oauth2/auth
范围以标准方式验证(openid email profile
)。假设用户通过Google进行身份验证,那么我可以恢复访问令牌。
我的问题是,返回的声明列表不足以让我确定Google帐户所属的组织。我认为“托管域名”声明可能唯一地将谷歌帐户识别为我们客户的工作帐户,但是如果用户使用别名电子邮件地址登录而不是工作的“主电子邮件”地址,则托管域将不正确。
我需要一种方法来发现经过身份验证的Google帐户属于哪个“工作帐户”,以便我可以将其映射到我平台上的正确组织。
一个例子可以帮助我思考:
有关如何发现经过身份验证的用户的“工作帐户”的任何建议?其他一些“范围”要求?还是一个不同的API?
感谢。
答案 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身份验证请求,并选择正确的帐户。