我们正在对现有的多租户Web应用程序实施OAuth。我们的许多租户都有Open ID Connect端点,我们需要对其进行集成。互联网上的大多数示例显示,每个OAuth / Open ID Connect提供程序(Google,Facebook等)都有一个专用按钮。我们绝对不希望我们的登录页面上有十几个按钮,甚至不想在那里显示所有客户的姓名。我们目前想到的解决方案是使用联合身份验证服务器(在IdentityServer4左右),该服务器托管一个集中式登录页面,并在需要登录时将用户带到那里。我们可以遵循常见的用户名格式,例如电子邮件ID。当用户输入凭据时,我们可以从电子邮件ID中读取域名,以确定应该对用户进行身份验证的Open ID Connect端点。在这里,我们考虑了此流程的两种变体:
1)在Identity Server的登录页面上询问用户的用户名和密码,并将其中继到适当的Open ID Connect端点,作为用于令牌检索的API调用。使得我们对此感到有些恼火的是,客户可能会在我们维护的站点上询问他们的外部密码(当然,我们不存储它)是一个潜在的安全隐患。
2)仅首先要求提供电子邮件ID。用户完成输入后,根据用户域确定Open ID连接端点,并将其重定向到客户端的登录页面;用户实际上是在客户的登录页面上输入密码。与选项1相比,这可能会涉及更多的实现。
因此,这里的问题是:在OAuth世界中,有没有一种标准的方法来处理这种情况?