通过一次性令牌登录

时间:2018-10-25 16:12:12

标签: ruby-on-rails security authentication login single-sign-on

我是Web应用程序上的开发人员-我们将其称为“ foo.com”。客户想要使用我们的服务,这意味着为其员工创建用户帐户。客户已经拥有自己的网站,员工可以登录该网站-我们称其为“ bar.com”。

当员工登录bar.com时,他们将看到foo.com的链接,并且单击该链接即可登录,而无需输入单独的foo.com凭据。

这是基本要求。我最初的假设是,我将能够使用某种基于SAML的SSO,但这是不可能的。实际上,bar.com的登录机制不能以任何方式受到影响或利用。我所能做的就是假设用户已经通过身份验证并登录到bar.com,然后从那里开始。

这是我建议的解决方案:foo.com为bar.com提供了API密钥。当bar.com用户登录时,bar.com后端使用API​​密钥和用户的电子邮件向foo.com发送请求,例如:

GET 'https://foo.com/api/generate_login_url?api_key=123&email=jim@bar.com

foo.com查找用户,生成令牌并使用包含该令牌的URL进行响应:

https://foo.com?token=xyz123

bar.com现在在用户界面中呈现此链接。单击后,它将转到foo.com,在其中检索令牌。相应的用户已登录,令牌随后被销毁。

很显然,有一些细节需要整理,但这是一般情况。

我想知道总体上这是否可行。如果是这样,如果需要调整怎么办?如果没有,有哪些替代方案?

0 个答案:

没有答案