【问题标题】:User Authentication with Rails App使用 Rails 应用程序进行用户身份验证
【发布时间】:2013-06-01 08:33:10
【问题描述】:
我有两个 Rails 应用程序,我想在另一个应用程序(例如应用程序 B)中接受来自一个应用程序(例如应用程序 A)的用户登录凭据。对于接受登录凭据的应用程序(应用程序 B),我认为最好的选择是使用 OAuth。但是对于正在使用其用户凭据的应用程序(应用程序A),我如何允许其他站点使用用户的登录信息?我是否也使用 OAuth 或 Doorkeeper 之类的东西?如您所知,我对用户身份验证非常陌生,因此任何建议都会有所帮助!
【问题讨论】:
标签:
ruby-on-rails
oauth
doorkeeper
【解决方案1】:
解决此问题的一种可能方法是创建一个基于门卫的独立应用程序,该应用程序将包含用户的所有凭据。然后,您的客户端应用程序实际上会与此“身份验证应用程序”连接(使用 Oauth。)然后,当客户端在 Auth 应用程序上进行身份验证时,它们将返回到客户端应用程序。当然,从 UI 的角度来看,您可以做到无缝,因此您的登录页面实际上会在这个 Auth 应用程序上,但对用户来说看起来是无缝的。这样,您可以根据需要添加任意数量的应用程序,并且凭据都将集中在一个地方。要回答您的具体问题,您可以在客户端应用上使用 Oauth2,在身份验证应用上使用 Doorkeeper。
您需要调整门卫配置以使此过程对用户“干净”。例如对于内部应用程序,您可以安全地在门卫中使用skip_authorization 方法。 Learn more about that here
这个门卫/oauth 系统具有将身份验证逻辑与主应用程序分离的额外好处,这是良好的面向服务设计的基础。当然还有其他方法可以解决这个问题,但考虑到您的问题,是的,Doorkeeper 和 Oauth2 可以解决您的问题。