2016-04-17 15 views
0

ユーザーの認証方法に応じて、samlまたはデータベースの資格情報でユーザーを認証する必要があります。 私は2つの問題を抱えています
1)私はコールバックバックURLにsaml応答を受け取りました。私はそれを夢見る人にどのように統合するのか分かりません。
2)ユーザー選択に基づいてデータベースまたはsamlレスポンスによってユーザーを認証する方法がわかりません。samlデビアスで返信するURL

任意の提案は本当に参考になる

+0

私はSAMLがあなたの望むものだとは思わない。 OAuthがほしいと思う。デバイスはSAMLゲームに非常に簡単に参加することはできません。 –

+0

@Andrew私はSAMLで回答を受け取ります。私は応答を得るためにコールバックを持っています。私は応答を解析し、deviseを使用してユーザテーブルのuidパラメータを入力する必要があります – user2914486

答えて

0

アプリにログオンページを埋め込むためのWebViewを使用する必要があります。

  1. ユーザーがデータベースログオンを選択した場合、ユーザーにユーザー名とパスワードの送信を要求する必要があります。

  2. ユーザーがSAMLログインを選択すると、そのユーザーはフェデレーションされたログインになり、あなたはAuthen RequestをIdpに送信します。 Idpページは、アプリ内のWebViewでレンダリングされます。 Idpがログオン処理後にユーザーを識別すると、属性AssertionConsumerServiceのAuthen要求で指定されたURLにページがリダイレクトされます。あなたは、あなたの環境のAPIサービスで最終的に提出しなければならないSAMLトークンを抽出するリクエストを傍受する必要があります。 APIサービスはトークン処理を行う必要があり、データベース認証によって生成されたものと同一のユーザープロファイルを生成します。

0

私は最近、自分のアプリケーションに工夫してSAMLを実装し、omniauth-saml宝石は、それが動作するようになってまで最短ルートであることがわかりました。あなたのコールバックフロー、ruby-samlライブラリの使用法、およびあなた自身で実装する苦痛である他のすべての詳細を処理します。また、任意の数のSAMLプロバイダを処理する必要がある場合は、omniauth-multi-provider-samlがうまく機能しました。

+0

入力していただきありがとうございます。私の場合は、2つのものしかありません。1)IDP url 2)call_back url。設定する秘密鍵やその他のパラメータはありません。あなたが実際の例を提供することができれば、それは本当に役に立ちます – user2914486

+0

ここを参照してください:https://github.com/omniauth/omniauth-saml#devise-integration。 omn​​iauth-samlの実装は、通常のomniauth統合と同じで、SAML部分の設定が少し異なります。リンク先のガイド(https://github.com/plataformatec/devise/wiki/OmniAuth:-概要)に従って、問題が発生した場合は教えてください。 –

+0

こんにちはRobertさん、私はuser_omniauth_authorize_path(:saml)を追加してsamlにリクエストを送信しましたが、リクエストを送信すると、** SAMLRequest **パラメータがidp_sso_target_urlに追加されています。そのため、フェデレーションサーバーからBad Request例外が発生しています。 ** SAMLRequest **パラメータの追加を避ける方法はありますか? – user2914486

関連する問題