5.3. 動作概要

ここでは SAML 認証を利用する場合の動作シーケンスについて説明します。

5.3.1. Web アプリケーションの場合

Web アプリケーションの場合の動作シーケンスは以下のとおりです。 ここで「コンテンツサーバ」は Web アプリケーションのコンテンツ(HTML + JavaScript) を提供するサーバです。

../_images/SAML_Sequence_WebApp.png
  1. ブラウザはコンテンツサーバにアクセスし、コンテンツを取得します。
  2. コンテンツサーバは、SAML 認証を行うタイミング(認証ボタンをおしたときなど)に、BaaS サーバの SAML 認証 URL にリダイレクトします。
  3. BaaS サーバは認証に必要な Cookie を発行した後、IdP にリダイレクトします。
  4. IdP は認証画面を出すなどして認証を実行します。
  5. 認証が完了したら、IdP は認証情報を BaaS サーバにリダイレクトします。
  6. BaaS サーバは認証情報を確認した後、ログイン用のワンタイムトークンを URL に付加してコンテンツサーバにリダイレクトします。
  7. Web アプリケーションは URL からワンタイムトークンを取得し、これを使用して BaaS のログインAPIを呼び出します。
  8. ログインが完了すると BaaS はセッショントークンを払い出します。

上記のうち、1, 2, 7 の処理については Web アプリケーション側で実装する必要があります。

5.3.2. ネイティブアプリケーションの場合

ネイティブアプリケーション(Windows, Android, iOS)の場合の動作シーケンスは以下のとおりです。

../_images/SAML_Sequence_NativeApp.png
  1. SAML 認証結果を受け取るための Local Web Server(リスナー)を作成します (カスタムURIスキームを利用できない場合)。
  2. SAML 認証を行うために、ブラウザを起動して BaaS サーバの SAML 認証 URL にアクセスします。
  3. BaaS サーバは認証に必要な Cookie を発行した後、IdP にリダイレクトします。
  4. IdP は認証画面を出すなどして認証を実行します。
  5. 認証が完了したら、IdP は認証情報を BaaS サーバにリダイレクトします。
  6. BaaS サーバは認証情報を確認した後、ログイン用のワンタイムトークンを URL に付加し、指定された URL にリダイレクトします。
  7. ネイティブアプリケーションはリダイレクトされた URL からワンタイムトークンを取得し、これを使用して SDK から BaaS のログインAPIを呼び出します。
  8. ログインが完了すると BaaS はセッショントークンを払い出します。

上記のうち、1, 2, 7 の処理についてはネイティブアプリケーション側で実装する必要があります。

リダイレクト URL の受け取り方法については以下の2通りがあります。

  • カスタムURIスキームを使用する: Android, iOS の場合は、アプリケーション毎に定義したカスタムURIスキームを利用できます。
  • ローカルWebサーバを使用する: PCのデスクトップアプリのようにカスタムURIスキームを使用できない場合は、アプリケーション内にローカルWebサーバを立ち上げ、http:// でリダイレクトURIを受け取ります。