最近のアクセス:
GAM - GAMRemoteREST 認証タイプ (OAuth 2.0)

GAMRemoteREST 認証タイプを使用すると、GAM を使用しているアプリケーションで別の GAM を ID プロバイダーとして使用できます。ユーザーは ID プロバイダー (IDP) に保存されている資格情報を使用してアプリケーションにログインします。
このため、クライアントアプリケーション (独自の GAM がある Web または SD)、およびユーザーが認証される ID プロバイダー (GAM を使用) があります。
このソリューションは一般に、信頼できる環境で使用します。ユーザーの資格情報がクライアントによって入力され、アプリケーション内を通過するからです。 
このソリューションのスキーマを簡略化して次に示します (実装の詳細は後述します)。
  1. ユーザーがクライアントアプリケーションで資格情報を入力します。
  2. この資格情報 (およびその他の情報、詳細は後述) を使用して ID プロバイダーの REST 認証サービスが呼び出され、ここでユーザーが認証されます。  
  3. ID プロバイダーから呼び出し元に応答が送信されると、クライアントアプリケーションに戻ります (認証に失敗した場合はエラーが返されます)。
イメージ:44946.png
GAMRemote 認証タイプ (同様に OAuth 2.0 を使用) と似ていますが、この場合はログインに REST が使用されます。このため、SSO のシナリオの場合のように、ID プロバイダーのログインへのリダイレクトはありません。
この認証タイプの特徴をいくつか次に示します:
  1. ユーザーは、ローカルログインに資格情報を入力します。GAM リモート認証の場合のように ID プロバイダーのログインにリダイレクトされることはありません。ID プロバイダーが常にユーザー資格情報を所有します。
  2. ログインは GAM リモートと同じプロトコルで行われます (OAuth 2.0)。

使用例

前述のように、資格情報がクライアントで入力されるため、これは一般に信頼できる環境で使用します。
  1. 別の GAM で実行されているサービスを呼び出すトークンが必要な場合。  ログイン後に、ID プロバイダーの GAM およびクライアントの GAM で GAMSession が生成されます (GAM リモート認証の場合と同様)。GAMSession には、REST サービスを呼び出すためのローカルトークンおよび外部トークンがあります (サービスがクライアントとサーバーのどちらでホストされているかによります)。
    GAM を使用するアプリケーションから、GAM を使用する REST サービスを利用する必要がある場合は、HTTP 呼び出しを使用する代わりに、GAMRemoteREST 認証タイプを使用して有効なトークンを取得し、プロバイダーのアプリケーションに対して認証を行うことができます。
  2. スマート デバイス アプリケーションで、ID プロバイダーに対する認証が必要で、ユーザーを IDP の Web ログインにリダイレクトすることを回避したい場合。


アーキテクチャおよび実装

アーキテクチャのスキーマを次に示します (細部は一部省いていますが、基本的な仕組みは理解できます)。
イメージ:44880.png
ユーザーのログイン時に、クライアントは ID プロバイダーにリダイレクトするのではなく、次の URL を使用して、有効なトークンを求める呼び出しを行います:
$ServerURL/oauth/gam/v2.0/access_token
ユーザー情報は次の URL でリクエストします。
$ServerURL/oauth/gam/v2.0/userinfo

クライアントのナレッジベースで実行されている REST サービスを呼び出します。
最初に GAMRemoteREST を使用してログインします。
&AdditionalParameter.AuthenticationTypeName = !"gamremoterest" //&AdditionalParameter は GAMLoginAdditionalParameters データタイプ
&LoginOK = GAMRepository.Login(&user, &password, &AdditionalParameter, &GAMErrors)
その後、REST サービスを呼び出すためのトークンをいつでも GAMSession から取得できます。
&AccessToken = GAMSession.GetToken()
//ここで Authorization ヘッダーを使用して REST サービスを呼び出す
&httpclient.AddHeader(!"Authorization",!"OAuth " + &AccessToken)
&httpclient.AddHeader(!"GeneXus-Agent",!"SmartDevice Application")
&httpclient.Execute(&method,&getstring) //例: &httpclient.Execute(!"GET",!"http://server/baseurl/rest/GetCustomers")
GAMSession.GetToken() メソッドがローカルトークンを返します (クライアントのナレッジベースのサービスを呼び出す際に役立ちます)。このトークンに適したセキュリティポリシーは Web です (OAuth ではないため、このトークンのタイムアウトは Web セッションのタイムアウト)。
サーバーのナレッジベースのサービスを呼び出す場合は、次のように外部トークン (Authorization ヘッダーで渡される) を取得する必要があります:
&GAMSession = GAMSession.Get(&GAMErrors)
&AccessToken = &GAMSession.ExternalToken

モバイルアプリケーション向けの GAMRemoteREST 認証

GAM の Login メソッド」を参照してください。

設定

サーバー側の設定

GAMRemoteREST 認証タイプのサーバー側の設定」を参照してください。

クライアント側の設定

GAMRemoteREST 認証タイプのクライアント側の設定」を参照してください。

使用可能バージョン

GeneXus 16 Upgrade 7 以降で使用できます。

参考情報

GAM を使用した REST サービスに対するシングルサインオン



サブページ
Created: 20/12/14 21:41 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0