最近のアクセス:
SSO を使用したアプリケーションのロールの管理

GeneXus Access Manager を使用するアプリケーションは SSO を実装できます。
GeneXus の SSO ソリューションでは、関連するすべての Web アプリケーションを GAM データベースに接続する必要があります。これらのアプリケーションのうち 1 つが Identity Provider (サーバーアプリケーション) であり、その他のアプリケーションはクライアントアプリケーションとして参照されます。このトピックの詳細については、「GAM を使用したアプリケーションのシングル サイン オン」を参照してください。
SSO は、分散されたさまざまな Web アプリケーションで一元化された認証を実現するためのソリューションを提供します。オーソライズは、常にクライアントアプリケーションで一元管理されます。

GAM のリモート認証とロール

前述のように、クライアントアプリケーションはオーソライズを実行します。つまり、クライアントアプリケーションの GAM で、GAM ロールGAM アクセス許可を定義する必要があります。
ただし、ユーザーが Identity Provider で認証を行う場合は、Identity Provider の GAM にあるロールの情報をクライアントアプリケーションの GAM に転送できます。
このメカニズムは次のとおりです:
  • ユーザーが認証を行う場合、ロールのリストをサーバーからクライアントアプリケーションに転送できます。ユーザーにロールを割り当てるには、これらのロールをクライアントアプリケーションの GAM でマッピングする必要があります。
ロールのマッピングには、ロールの [ External ID ] プロパティを使用します。つまり、同じロールであるとみなすためには、サーバーにおけるロールの [ External ID ] が、クライアントにおけるロールの [ External ID ] と同じである必要があります。
イメージ:25552.png
図 1: サーバーにおけるロール
イメージ:25553.png
図 2: クライアントにおけるロール
  • サーバーとクライアントのロールは同じ階層を持つ必要があります。
ただし、前述のように、オーソライズはクライアントアプリケーションで一元管理されるため、実際に重要なのは、クライアントにおけるロールの定義と階層です。また、アクセス許可はクライアントアプリケーションで一元管理されます。

リモート認証でサーバーからクライアントにロールを転送する方法

Identity Provider の GAM では、すべてのクライアントアプリケーションを、対応するクライアント ID およびクライアントシークレットを指定して登録する必要があります。一方、クライアントアプリケーションでは、GAM の認証タイプ (リモート) を定義する必要があります。
1. GAM Web Backoffice をサーバーアプリケーションで実行する場合は、登録されたクライアントアプリケーションの [ Can get user roles? ] チェックボックスを選択する必要があります:
イメージ:25554.png
図 3: SSO 用のサーバー設定: ユーザーロールの取得。GAMExampleEntryApplication Web パネルの実行
GAM API に属する、GAMApplication オブジェクトの ClientAllowGetUserRoles メソッドは、この Web パネル (GAMExampleEntryApplication) のコードで使用されるメソッドです。GAMExampleEntryApplication オブジェクトは GAM Examples に含まれています。
&Application.ClientAllowGetUserRoles         = &ClientAllowGetUserRoles  //&Application は GAMApplication データタイプ
2. GAM Web Backoffice をクライアントアプリケーションで実行する場合は、 [ Authentication and Roles ] を管理する GAM の認証タイプ (リモート) の定義を指定する必要があります。
イメージ:25555.png
図 4: SSO 用のクライアント設定: ユーザーロールの取得。GAMExampleEntryAuthenticationType Web パネルの実行
GAM API を使用する場合のコードは次のようになります:
&AuthenticationTypeGAMRemote.FunctionId = &FunctionId.ToString() //&AuthenticationTypeGAMRemote は GAMAuthenticationTypeGAMRemote データタイプ&FunctionId は GAMAuthenticationFunctions ドメインに基づいています。
この設定の完了後、設定済みのリモート認証を使用してユーザーが認証を行うと、クライアントアプリケーションでは、Identity Provider にあるロールを使用してユーザーが更新されます。
ユーザーに割り当てられるのは、 [ External ID ] によって関連付けられているロールだけです。








サブページ
Created: 15/01/07 22:50 by Admin Last update: 21/05/21 03:34 by Admin
カテゴリ
Powered by GXwiki 3.0