2016-05-06 167 views
1

我有兩個應用程序,AppA和AppB,它們都是Rails應用程序。如何使用devise,omniauth登錄到遠程rails應用程序

我創建了一個使用Devise,Omniauth和Doorkeeper的單點登錄機制。 這是如果您登錄到AppA,那麼您將被授權給AppB,因爲AppB向AppA發出oauth呼叫以檢查此情況。 AppA有設計,目前你必須登錄。

我希望能夠做的是在AppB中創建一個ajax登錄表單,並且這會將我的憑據傳遞給AppA中的Devise,並允許我訪問AppB,而不是重定向到AppA並返回。

我似乎能夠做到這一點,如果我禁用在AppA中的CSRF檢查,但我希望能夠有一個替代方案,我或者不必這樣做,或者我可以提供一個替代方案,而無需任何安全漏洞。

所以我的主要問題是,如果有人有任何想法如何做到這一點,或者他們做了類似的事情,並有建議嗎? 非常感謝,

埃蒙

回答

0

您可以禁用CSRF在API控制器檢查(在你的ApplicationController讓你的應用程序的其餘部分被保護離開它)有,例如:

class ApiController < ApplicationController 
    protect_from_forgery with: :null_session 
end 

或者,如果您只想禁用某些操作的CSRF檢查,例如將以下內容添加到您的控制器中:例如:

skip_before_action :verify_authenticity_token, only: [:new, :create] 
+0

謝謝您的回覆,但我想要當然,我對此有一些保障,所以我不只是想拿走CSRF並且不留下任何東西。 – etphoneshome

+0

正如我上面提到的 - 你只想在你的ApiController *中禁用CSRF檢查*。然後,您可以默認在您的ApplicationController中啓用CSRF保護,以便保護您的其他應用程序。 – mwalsher

相關問題