web-dev-qa-db-ja.com

SAMLIDPに対するモバイルユーザーの認証

私は解決策を探しています-SAMLIDPに対してモバイルアプリユーザーを認証し、いくつかの基本的なクエリを持っています(私はSAMLに不慣れです、OAuth :))このシナリオでは、フローはモバイルユーザーがIDPによって認証されるように、IDPによって生成されたSAML応答はサービスプロバイダーに送信されます(モバイルブラウザー-Webviewを介して)。次に、サービスプロバイダーは、モバイルアプリが後続の呼び出しに使用するトークンを作成します。この理解は正しいですか?

また、モバイルユーザーはIDPでどのように認証されますか?つまり、対応するIDPはモバイルアプリをサポートする必要がありますか? IDPのログイン画面はログイン中に携帯電話に表示されますか?

私のアプリケーションでは、現在、モバイル(Rest API)ユーザーは、データベース内のアプリケーションの資格情報に対して認証されています。しかし現在、デスクトップアプリは認証用にSAMLを組み込んでいます。したがって、モバイルユーザーはSAMLIDPに対して認証される必要があります。

前もって感謝します!

16
nshweta

はい、あなたの理解は正しいです。モバイルクライアントでSAMLIDPを使用するには、通常のクライアントと同じプロセスを実行する必要があります(AuthnRequest-> SPとIDP)間の応答交換)。フロー全体は次のようになります。

  • モバイルアプリケーションは、SPのパブリックURLにアクセスするWebViewを開きます
  • your SPは、AuthnRequestを使用してSAML IDPにリダイレクトを送信することにより、IDPで認証を開始します
  • ユーザーはIDPのUI内で認証します(モバイルクライアントを使用して開くと、モバイルクライアントに対して適切にレンダリングできるはずです)
  • IDPはあなたのSP with Response
  • あなたのSPアプリケーションは応答を処理し、RestAPIで使用できるトークンを生成します
  • SPは、トークンをモバイルアプリケーションに通信します(たとえば、WebViewClient + onPageFinished + Cookieを使用するか、addJavascriptInterfaceで提供されるオブジェクトを呼び出すか、または既に使用しているものを使用します)

IDPを使用した通常のモバイル認証(Facebook/Googleの場合はOAuth 2)を使用するなど)と比較すると、SAMLはより複雑です。OAuth 2.0を使用すると、簡単に実行できます。 SAMLは、Oauth(forセキュリティ上の理由)およびSAML応答の処理ははるかに複雑であるため(XML署名、XML暗号化などのため)、SAMLを使用する場合はこのアプローチは実行できません。

33