2013-08-18 19 views
7

私が最後にやっているのは、通常devisでログインするか、SAMLでログインすることです。だから私はオムニバスとサムルを統合し、オムニバスと考察すれば、それを達成することができると私は読んでいます。Rails - 複数のIDPでomniauth-samlを使う

私の問題は、私が選択したい異なるIDPを持っていることです。だから私は持っていない:idp_sso_target_url、しかし多くの。だから私の質問はどのように私は動的にtarget_urlの値を変更することができます。現在omniauth-SAML宝石は、設定/初期化子ディレクトリにこの値を定義します。..

あなたはDB内のすべてのプロバイダの設定を保存し、その後でセットアップフェーズでomniauth設定することができ、

答えて

3
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 
4

をありがとう要求時間。例:

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を参照してください。

0

フェデレーションコンテキストでアプリケーションを使用する場合は、saml2int.orgプロファイルに規定されているようなメタデータソースが存在する可能性が最も高いでしょう。このメタデータには、IDPディスカバリにデータを取り込み(すべてのIDPを自動的に設定するためのデータ)があります。 omn​​iauth-samlはSAMLメタデータ仕様をサポートしていないようですので、SAMLプロキシのようなものがあります。工夫+ OmniAuthで複数のSAML国内避難民を使用して

0

は、シングルIDPのために、この公式ガイドに従ってください。

https://github.com/omniauth/omniauth-saml#devise-integration

あなたのSPは、単一のIDPで作業していたら、Users::OmniauthCallbacksControllerで微調整

  1. 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'} 
    
  2. を次の操作を行い、firstsecondで名前のアクションを追加で提案されたsamlの代わりに公式ガイド。あなたのUserモデルで

  3. devise :omniauthable, omniauth_providers: [:first, :second] 
    

すべてが正しく設定されている場合、あなたが今、あなたのSPは2人の国内避難民のために設定されています。

関連する問題