2013-06-05 102 views
1

我有两个Rails应用程序,我想接受来自另一个应用程序(比如说App A)的用户登录凭据(比如说App A)。对于接受登录凭证的应用程序(应用程序B),我认为最好的选择是使用OAuth。但对于正在使用其用户凭证的应用程序(应用程序A),如何允许用户的登录信息被其他网站使用?我是否也使用OAuth,或者类似Doorkeeper?正如您所看到的,我对用户身份验证非常陌生,所以任何建议都会有所帮助!用Rails应用程序进行用户身份验证

+0

我认为你需要SSO,[多个应用程序设计,Omniauth和单一登录](http://blog.joshsoftware.com/2010/12/16/multiple-applications-with-devise-omniauth-and-单点登录/) –

回答

5

解决此问题的一种可能方法是创建一个基于门卫的独立应用程序,该应用程序将包含所有用户的凭证。然后,您的客户端应用程序将实际连接到此“验证应用程序”(使用Oauth)。然后,当客户端在验证应用程序上进行验证时,它们会返回到客户端应用程序。当然,从用户界面的角度来看,您可以实现这种无缝连接,因此您的登录页面实际上将位于此Auth应用程序上,但它对用户而言看起来是无缝的。这样,您可以根据需要添加尽可能多的应用程序,并且凭据都将放在一个地方。要回答您的具体问题,您可以在您的客户端应用程序上使用Oauth2,并在Auth App上使用门卫。

您需要调整门卫配置,以使该过程对用户“干净”。例如,对于内部应用程序,您可以安全地在门卫中使用skip_authorization方法。 Learn more about that here

此门卫/ oauth系统具有将您的身份验证逻辑与主应用程序解耦的附加优势,这是良好的面向服务设计的基础。当然,还有其他方法可以解决这个问题,但考虑到您的问题的背景,是的,Doorkeeper和Oauth2可以解决您的问题。

相关问题