2013-06-05 75 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可以解決您的問題。

相關問題