最近のアクセス:
GAM を使用したアプリケーションのシングル サイン オン (GeneXus 15 Upgrade 10)
この機能によって、分散した複数の Web アプリケーションに対する一元化された認証が実現します (SSO)。
複数の GeneXus Web アプリケーションを同じブラウザーで実行している場合、ユーザーは、最初のアプリケーションでログイン認証を要求されたときに、1 回認証するだけで済みます。
そのセッションが有効な間は、別の Web アプリケーションに切り替えた後でも、ユーザーは資格情報を再度入力する必要がありません。ログインは、同じブラウザーインスタンス (異なるタブ) で実行中のすべての Web アプリケーションに対して有効です。

仕組み

このシナリオでは、関係するすべての Web アプリケーションが GeneXus Access Manager を使用する必要があります。また、アプリケーションの 1 つが ID プロバイダー (ユーザーの ID および資格情報を所有するサーバー。ユーザーが認証に使用します) として設定されている必要があります。
ID プロバイダーである GAM は、別のアプリケーションの認証に使用されます (ID プロバイダーである Facebook、Twitter、および Google での仕組みと同じです)。
App1、App2、App3 という 3 つの Web アプリケーションがあるシナリオについて考えてみましょう: App2 を、ID プロバイダーアプリケーションとします。
次の図は、ユーザーが他のいずれかのアプリケーションの非公開オブジェクトの実行を試みた場合のフローを示しています。 
イメージ:25386.png
この図では、ユーザーが App1 の非公開オブジェクトの実行を試み、それが ID プロバイダーアプリケーションである App2 にリダイレクトされます (図のステップ 1 とステップ 2)。
その後、ログイン画面が表示され、そこで資格情報を入力すると、App1 へ自動的にリダイレクトされます。
App1 にログインした後で、ユーザーが同じ Web ブラウザーから App3 の非公開オブジェクトの実行を試みると、ID プロバイダー App2 にリダイレクトされます。セッションが有効な場合 (既に有効なセッションがあります)、ログイン画面は表示されずに App3 へのアクセスが可能です。次の図を参照してください:
イメージ:25387.png
これは Facebook や Twitter での処理とよく似ています。ユーザーがこれらのサイトのいずれかにログインすると、それを ID プロバイダーとして使用するアプリケーションは、同じブラウザーで実行されている場合、同じ有効なセッションを使用します。

GAM を使用して SSO を構成する手順

SSO を構成するには、クライアントがサーバーに対して認証を行うことができるよう、クライアント側で GAM を設定するとともに、サーバー側でも GAM を設定します。
サーバー側で、クライアント側の GAM アプリケーションと同じ資格情報を必要とする GAM アプリケーションを定義する必要があります。クライアント側では、下記で説明する GAM のリモート認証タイプを定義する必要があります。
1.GAM ID プロバイダーの設定
2.クライアントアプリケーションの設定
手順 1 および 2 については、「GAM のリモート認証タイプ」を参照してください。
3.クライアントアプリケーションでの GAM ログインオブジェクトの設定
各クライアントアプリケーションで、[ Login Object for Web ] プロパティGAMSSOLogin オブジェクトに設定できます。このオブジェクトは、ユーザーが有効なセッションを保持しているかどうかをチェックします。保持していない場合は、リモート ログイン メカニズムがトリガーされます。これは GAM Examples と一緒に配布されます。
イメージ:28059.png
[ Login Object for Web ] プロパティ

SSO の実行フロー

1 つの方法として、[ Login Object for Web ] プロパティGAMSSOLogin に設定します。
この場合、ユーザーが非公開オブジェクトを実行しようとすると、GAMSSOLogin オブジェクトが自動的に実行されます。GAMSSOLogin は、ユーザーに有効なローカルセッションがあるかどうかをチェックし、有効なセッションがない場合は、リモート認証を実行します。
リモート認証では、ID プロバイダーに接続して、ユーザーの有効なセッション (存在する場合) を取得するか、またはログインウィンドウを開いてユーザーに資格情報を入力させます。 
この場合、ユーザーに表示されるログインは、サーバーの設定で Local login URL に指定されたオブジェクトです (1)。一般的に、このためには GAMRemoteLogin が使用されます。
イメージ:28084.png
ユーザーが ID プロバイダーアプリケーションによって提供された有効なセッションを保持している場合は、クライアントアプリケーションに直接リダイレクトされます。
 
もう 1 つの方法としては、[ Login Object for Web ] プロパティGAMExampleLogin に設定します。
この場合、非公開オブジェクトにアクセスすると、GAMExampleLogin オブジェクトが自動的に実行されます。ユーザーはローカルな GAM を使用して認証を行うことができます。または、専用のアイコンを使用して、リモート認証が可能です。
イメージ:28085.png
 
  • ユーザーが ID プロバイダーに対して初めて認証を行う場合、ID プロバイダーの GAM データベースで使用されたものと同じ GAMUser GUID 識別子を使用して、ユーザーはクライアントアプリケーションの GAM データベースに登録されます。
  • パスワードはクライアントの GAM データベースには格納されません。また、適用されるパスワードポリシーは、サーバーアプリケーションの GAM データベースのポリシーになります。

SSO を使用したアプリケーションのログアウト動作

X Evolution 3 および以前のバージョンでは、GAMRepository.Logout() メソッドが、クライアントにローカルなログアウトを実行します。サーバーでは、サーバー上でログアウトが実行されるまで、セッションが引き続き有効になります。
GeneXus 15 以降、3 つの異なるログアウト動作を設定できます。「GAM を使用したシングル サイン オンのログアウトオプション」を参照してください。
  • ここで使用されるメカニズムは Oauth 2.0 に基づいています。
  • GeneXus 15 Upgrade 2 以降の GAM では、SD アプリケーションでも SSO が実装されます。これは、SAC #41291 が変更されたためです。 

参考情報

(1) GAM の認証タイプ: リモート
(2) SSO を使用したアプリケーションのロールの管理
(3) GAM SSO flow of execution
(4) HowTo: Implement SSO for applications that do not use GAMImplement SSO for applications that do not use GAM







Created: 18/10/29 01:08 by Admin Last update: 19/07/02 19:57 by Admin
カテゴリ
Powered by GXwiki 3.0