我試圖最終擁有的是通過設計登錄的能力,或者選擇使用SAML登錄。所以我讀到,如果我整合omniauth和saml,然後omniauth和設計,我可以實現這一點。Rails - 在多個國內流離失所者中使用omniauth-saml
我的問題是,我有不同的IDP,我想選擇。所以我沒有:idp_sso_target_url,但很多。所以我的問題是我如何動態地改變target_url的值。目前omniauth,SAML寶石定義在config/initializers目錄這個值..
謝謝
我試圖最終擁有的是通過設計登錄的能力,或者選擇使用SAML登錄。所以我讀到,如果我整合omniauth和saml,然後omniauth和設計,我可以實現這一點。Rails - 在多個國內流離失所者中使用omniauth-saml
我的問題是,我有不同的IDP,我想選擇。所以我沒有:idp_sso_target_url,但很多。所以我的問題是我如何動態地改變target_url的值。目前omniauth,SAML寶石定義在config/initializers目錄這個值..
謝謝
Rails.application.config.middleware.use OmniAuth::Builder do
provider :saml,
name: "first",
assertion_consumer_service_url: "/auth/first/callback",
issuer: "your-app",
idp_sso_target_url: "first.com/idp"
idp_cert_fingerprint: "E7:91:B2:E1:...",
name_identifier_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
provider :saml,
name: "second",
assertion_consumer_service_url: "/auth/second/callback",
issuer: "your-app",
idp_sso_target_url: "second.com/idp",
idp_cert_fingerprint: "E7:91:B2:E1:...",
name_identifier_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
end
您可以將設置存儲在數據庫的每個供應商,然後在安裝階段,在配置omniauth請求時。例如:
SETUP_PROC = lambda do |env|
request = Rack::Request.new(env)
user = User.find_by_subdomain(request.subdomain)
env['omniauth.strategy'].options[:consumer_key] = user.consumer_key
env['omniauth.strategy'].options[:consumer_secret] = user.consumer_secret
end
use OmniAuth::Builder.new do
provider :twitter, :setup => SETUP_PROC
end
請參閱https://github.com/intridea/omniauth/wiki/Setup-Phase瞭解更多信息。
如果在聯合環境中使用該應用程序,則很可能會有元數據源,如saml2int.org配置文件中所述。此元數據具有填充IDP發現的數據(並自動配置所有IDP)。似乎omniauth-saml不支持SAML元數據規範,因此某種SAML代理是另一種選擇。
使用多個SAML國內流離失所者與設計+ OmniAuth:
按照單IDP本官方指南。
https://github.com/omniauth/omniauth-saml#devise-integration
一旦你有你的SP單IDP工作,做以下調整
在devise
初始化
config.omniauth :first, {
name: :first,
strategy_class: ::OmniAuth::Strategies::SAML,
#Rest of the config as per omniauth-saml guide
assertion_consumer_service_url: '/users/auth/first/callback'}
config.omniauth :second, {
name: :second,
strategy_class: ::OmniAuth::Strategies::SAML,
#Rest of the config as per omniauth-saml guide
assertion_consumer_service_url: '/users/auth/second/callback'}
在Users::OmniauthCallbacksController
,添加名爲first
和second
行動而不是按照建議的saml
官方指南。
在你User
型號:
devise :omniauthable, omniauth_providers: [:first, :second]
如果一切配置正確,您現在已經配置了兩個國內流離失所者的SP。