最近のアクセス:
GAM を使用したアプリケーションでのセキュリティセッション管理

GeneXus Access Manager (GAM) は、GeneXus アプリケーション (Web アプリケーションまたはネイティブ モバイル アプリケーション) の認証およびオーソライズの問題を解決します。
このドキュメントの目的は、この種のアプリケーションによって使用されるセッション管理に関する主要なコンセプトを簡単に説明することです。
セキュリティのメカニズムを解決するために使用される「セッション」は、アプリケーション (ここでは、GAM を使用したアプリケーションを指します) のタイプに応じて、2 種類あります:

Web セッション

Web アプリケーションでは、「Web セッション」は、認証の問題 (セッションの期限が切れない限り、認証されたまま) を解決するために必要なすべての情報を格納するために使用されます。

Web セッションのタイムアウトの変更方法:

Web セッションのタイムアウトは、GAMSecurityPolicy 外部オブジェクトの [ WebSessionTimeOut ] プロパティを使用して、各 GAM のセキュリティポリシーで設定する必要があります。
次のコード例を参照して、セキュリティポリシーをロードし、セッションのタイムアウトを変更します:
&SecurityPolicy.Load(&Id)  //&Id は GAMKeyNumLong ドメインに属する。
&SecurityPolicy.WebSessionTimeOut     = &WebSessionTimeOut //&SecurityPolicy は GAMSecurityPolicy データタイプ。&WebSessionTimeOut は N(4)。
Web Backoffice を使用し、GAMExampleEntrySecurityPolicy Web パネル (GAM Examples にあります) を実行することでセッションのタイムアウトを設定できます:
イメージ:52263.jpg
図 1.
注: 
セキュリティポリシーの [ セッションのタイムアウト (分単位) ] には、Web サーバーで設定されたセッションのタイムアウトと同じか、それよりも短い値を設定する必要があります。

ネイティブモバイル用のローカルセッション

ネイティブ モバイル アプリケーションでは、認証が必要な REST Web サービスとの通信を実現する access_token と一緒にデバイス (クライアント層) に「ローカルセッション」が格納されます (詳しくは、「安全なネイティブ モバイル アプリケーションのアーキテクチャ」を参照)。
認証が Web セッションでのみチェックされる Web アプリケーションとは異なり、ネイティブ モバイル アプリケーションは、デバイスにインストールされたアプリケーションとサーバーに存在する REST Web サービスとの通信を可能にする access_token を格納する「ローカルセッション」をキャッシュします。この場合、オーソライズメカニズムは OAuth に基づいています。

「ローカルセッション」の動作

安全なネイティブ モバイル アプリケーションに接続するために、エンドユーザーはオーソライズされたユーザー名/パスワードが必要になります。これらの資格情報は、アプリケーションのインストール時にデバイスにダウンロードされたクライアント ID およびクライアントシークレットの情報と一緒に、サーバーアプリケーションとの最初の接続を確立するために使用されます。
ユーザーがアプリケーションに接続しようとすると、ログインが表示されます。最初に接続しようとしたときに、ユーザー名、パスワード、client_id、および client_secret を使用してサーバーへの POST が作成され、HTTP 応答が、接続中に使用される access_token を返します。
この access_token はデバイスに格納され、ユーザーが接続している間変更しないままでおくこともできれば、 [ トークンの有効期限 (分単位) ]  プロパティ (セキュリティポリシーのオプションとして使用可能。図 2 を参照) の値に応じて定期的にリセットすることもできます。
access_token はデバイスキャッシュに格納され、有効である (ユーザーがログアウトしない) 間は、エンドユーザーに再度ログインが要求されることはありません。
ユーザーがアプリケーションからログアウトすると、ローカルセッションは削除されます。
イメージ:52264.jpg
図 2.

注:

1."OAuth トークンの有効期限" の時間切れ基準は、Web セッションの有効期限のタイムアウトとは異なります。後者はアイドル時間に関係し、前者は経過時間に関連します。
2.すべてのセキュリティポリシーおよびリポジトリの設定は、GAM API で行えることに留意してください。
例: 次のコードでは、セキュリティポリシーを作成し、セッションのタイムアウトおよび OAuth トークンの有効期限を設定します。
&SecurityPolicy.Id = &Id  //&SecurityPolicy は GAMSecurityPolicy タイプ。
&SecurityPolicy.Name     = "TESTSecurityPolicy"
&SecurityPolicy.WebSessionTimeOut   = 10 
&SecurityPolicy.OauthTokenExpire  = 15
&SecurityPolicy.Save()
if &SecurityPolicy.Success()
  commit
else
  &Errors = &SecurityPolicy.GetErrors() //&Errors は GAMError コレクションタイプ。
  For &Error in &Errors
   Msg(Format("%1 (GAM%2)", &Error.Message, &Error.Code))
  EndFor
endif

参考情報

安全なネイティブ モバイル アプリケーションのアーキテクチャ
GAM での匿名セッション - Web アプリケーション


 

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