Skip to main content

 

 

 

 
Language:

 

 
Applies only to Reactive Web Apps
 
 
OutSystems

リアクティブWebアプリのログイン/ログアウトフローを更新してSAML 2.0をサポートする

このドキュメントで説明する手順は、バージョン1.2.3より前のバージョンのOutSystems UI Templates Reactiveを使用してリアクティブWebアプリを作成した場合にのみ必要です。
アプリ作成時のテンプレートの正確なバージョンがわからない場合は、以下の手順に従ってログインおよびログアウトフローがすでに更新されているかどうかを確認してください。

古いバージョンのOutSystems UI Templates Reactiveを使用してリアテクティブWebアプリを作成している場合、SAML 2.0認証を使用するにはアプリのログインおよびログアウトフローを更新する必要があります。

前提条件

リアクティブWebアプリでSAML 2.0認証を使用するには以下が必要です。

  • Platform Serverバージョン11.8.0以降
  • Service Studioバージョン11.6.30以降
  • Service CenterでのSingle Sign-On Between App Types設定の有効化(詳細については、「アプリ認証を構成する」をご覧ください)

ログイン/ログアウトフローの更新

一般的には以下の手順を実行します。

  1. アプリのホームモジュールに依存関係を追加します。
  2. DoLogoutサーバーアクションを更新します。
  3. OnExceptionアクションを更新します。
  4. UserInfoブロックを更新します。

依存関係を追加する

以下の手順を実行します。

  1. Service Studioで、リアクティブWebアプリのホームモジュールを開きます。
  2. Manage Dependencies]ウィンドウを開きます。
  3. 左側のプロデューサモジュールのリストでUsersを選択します。
  4. 依存関係として次のサーバーアクションを選択します。

    • User_GetUnifiedLoginUrl
    • User_GetUnifiedLogoutUrl

    Usersから必要なサーバーアクションへの依存関係を追加する

1.[Apply]をクリックします。

DoLogoutサーバーアクションを更新する

この手順では、アプリのホームモジュールのDoLogoutサーバーアクションを編集し、SAML 2.0構成設定でログアウトURLが指定されている場合にリダイレクトされるようにします。

DoLogoutサーバーアクションは、Service Studioの[Logic]タブの[Server Actions > Authentication]の下にあります。

以下の手順を実行します。

  1. RedirectURLというText型の新しい出力パラメータをDoLogoutサーバーアクションに追加します。

  2. このアクションのOriginalUrl入力パラメータで以下の値を使用して、User_GetUnifiedLogoutUrlサーバーアクションからログアウトURLを取得します。

    If(GetExceptionURL()="", GetBookmarkableURL(), GetExceptionURL())

  3. 前のアクションで取得したログアウトURLに値がある場合は、Assignツールを使用してRedirectURL出力パラメータにURLを設定します。それ以外の場合はUser_Logoutサーバーアクションを呼び出し、ユーザーをログアウトさせてセッションを終了します。

  4. User_Logoutフロー要素の後にUser_GetUnifiedLoginUrlサーバーアクションを呼び出し、SAML 2.0構成設定のログインURLが定義されているかどうかを確認します。このアクションのOriginalUrl入力パラメータには以下の値を使用します。

    If(GetExceptionURL()="", GetBookmarkableURL(), GetExceptionURL())

  5. Assignツールを使用して、RedirectURL出力パラメータの値を前のアクションで取得したログインURLに設定します。

上記の手順によって得られる実装例のフローは以下のとおりです。

更新されたDoLogoutフローと詳細

OnExceptionアクションを更新する

この手順では、OnExceptionアクション、つまりSecurityExceptionを変更し、SAML 2.0構成設定でログインURLが指定されている場合はリダイレクトされるようにします。

OnExceptionアクションは、Service Studioの[Interface]タブの[UI Flows > Common]の下にあります。

以下の手順を実行します。

  1. OnExceptionアクションのSecurityExceptionフローで、UserIdがnullかどうか(null識別子に等しいかどうか)を検証した後、User_GetUnifiedLoginUrlサーバーアクションからログインURLを取得します。このとき、このアクションのOriginalUrl入力パラメータで以下の値を使用します。

    GetBookmarkableURL()

  2. 前のアクションで取得したログインURLに値がある場合は、ユーザーをそのURLにリダイレクトします。それ以外の場合は、[Common\Login]画面にユーザーをリダイレクトします。

上記の手順によって得られる実装例のフローは以下のとおりです。

更新されたOnExceptionフローと詳細

UserInfoブロックを更新する

このブロックでは以下を行う必要があります。

  • ClientLogoutクライアントアクションを編集します。
  • 新しいClientLoginクライアントアクションを作成します。
  • ブロックのUIを変更します。

UserInfoブロックは、Service Studioの[Interface]タブの[UI Flows > Common]の下にあります。

要素ツリーのUserInfoブロックの下にあるClientLogoutアクションを開き、以下の手順を実行します。

  1. DoLogoutサーバーアクションの呼び出しの後にIfツールを使用して、サーバーアクションの出力(RedirectURL出力パラメータ)が空かどうかを検証します。

  2. RedirectURLが空ではない場合、そのURLにユーザーをリダイレクトします。それ以外の場合は、[Common\Login]画面にユーザーをリダイレクトします。

上記の手順によって得られる実装例のフローは以下のとおりです。

更新されたClientLogoutフロー

UserInfoブロックの下にClientLoginという新しいクライアントアクションを作成し、以下の手順を実行してフローを定義します。

  1. このアクションのOriginalUrl入力パラメータで以下の値を使用して、User_GetUnifiedLoginUrlサーバーアクションからログインURLを取得します。

    GetBookmarkableURL()

  2. 前のアクションで取得したログインURLに値がある場合は、ユーザーをそのURLにリダイレクトします。それ以外の場合は、[Common\Login]画面にユーザーをリダイレクトします。

上記の手順によって得られる実装例のフローは以下のとおりです。

更新されたClientLoginフローと詳細

最後に、以下の手順を実行してUserInfoブロックのUIを変更します。

  1. 要素ツリーでUserInfoブロックをダブルクリックしてインターフェイスエディタを開きます。

  2. Login]リンクを選択します。

  3. リンクのプロパティでOn Clickイベントの値を変更して、先ほど作成したClientLoginクライアントアクションを参照するようにします。

更新されたUserInfoブロックのリンク