2015-05-18 106 views
1

我想了解如何將SSO(單點登錄)和ADFS(Active Directory聯合服務)集成到現有的Ruby在由nginx提供服務的Linux環境中託管Rails應用程序。使用Ruby On Rails的SSO(單點登錄)和ADFS(Active Directory聯合服務)

考慮夥伴(使用Active唱片目錄的公司)和服務提供商(Rails應用程序)。

似乎服務提供商Web服務器必須運行ADFS Web代理,該代理將處理與合作伙伴的身份驗證過程,並最終將用戶重定向到帶有令牌的Rails應用程序,該聲明將用於標識用戶在應用程序中。

我主要關心的是這個ADFS Web代理:

我是否理解正確,它必須在服務提供商側運行?(我對合作夥伴不感興趣)。如果是這樣,將ADFS SSO與我們的應用程序(由nginx在Linux操作系統上)集成的最佳方式是什麼?我需要運行聯合服務器的Windows服務器嗎?

非常感謝您的幫助!

+0

你使用的是devise還是omniauth?我爲shibboleth/touchstone配置SSO的情況類似,併爲它找到了一個omniauth策略。 – errata

回答

2

ADFS能處理兩個協議 - WS-美聯儲和SAML。 ADFS 3.0處理OAuth 2.0(但不是OpenID Connect)中的授權代碼授權,

因此獲得您的Rails應用程序。要與ADFS交談,它需要支持其中一種協議。

如果可以這樣做,則不需要任何其他服務器。

也許就像ruby-saml

看吧:SAML 2.0 SSO for Ruby on Rails?

的另一種方法是使用OAuth/REST去一些中間聯合服務器,然後SAML/WS-送出的另一邊。

Auth0和Ping-Federate支持這種方法。

1

如果您正在使用omniauth或者,如果你能使用它來看看這個:https://github.com/highgroove/omniauth-saml-rstr

+0

這是否意味着我不需要本文檔中所述的AD FS Web代理? https://msdn.microsoft.com/en-us/library/bb897402.aspx –

+0

我仍然需要建立一個shibboleth/SAML服務提供商來與校園網進行通信,所以我認爲你可能需要做類似的事情。 – errata

+1

否 - 這是對Server 2008的一個非常古老的參考,並且指的是ADFS 1.1。在Server 2008 R2中,ADFS 2.0是一個可下載的組件,代理概念已被廢棄。當前級別是Server 2012 R2上的ADFS 3.0。 – nzpcmad