GeneXus Access Manager (GAM) が提供する API によって、データタイプやメソッドを使用して、GeneXus アプリケーション (Web アプリケーションとネイティブ モバイル アプリケーションの両方) にセキュリティ (認証とオーソライズ) を追加できます。
そのため、
ナレッジベースで GAM を有効にすると (
[ Enable Integrated Security ] プロパティを True に設定)、特定の
外部オブジェクトがインポートされ、GAM API を操作できるようになります。外部オブジェクトは、GAM API にアクセスする方法であり、GeneXusSecurity というモジュールで配布されます。
ドメインは GeneXusSecurityCommon モジュールで配布されます。
GAMUser、GAMRepository、GAMPermission、GAMApplication、GAMError は、一部の外部オブジェクトの名前です。
外部オブジェクトにはプロパティとメソッドがあります。具体的には、次に示す
ビジネスコンポーネントと同じメソッドが実装されます:
- Load()
- Save()
- Delete()
- Fail()
- Success()
GAM オブジェクトのプロパティを変更した場合、save() メソッドを呼び出してから、Commit コマンドを実行する必要があります。
GAM オブジェクトには、オブジェクトを作成、更新、または削除するメソッドも実装されています (下の例の AddPermission メソッドを参照)。これらのメソッドでは、メソッドが正常に実行された後に Commit コマンドを使用する必要があります。暗示的なコミットを実行する唯一の GAM メソッドはログインに関連するもので、新しい論理作業単位 (Logical Unit of Work = LUW) で実行します。
SAC #31253 を参照してください。
両方の方法で変更を行い (プロパティとメソッドの両方を使用)、エラーが発生した場合に両方の変更を取り消す必要がある場合は、プログラムで制御する必要があります。
&PermissionAdd.ApplicationId= &AppId
&PermissionAdd.GUID = &Id
&PermissionAdd.Type = &Access
&isOK = &GAMRole.AddPermission(&PermissionAdd, &Errors)
If not &isOK
For &Error in &Errors
Msg(Format(!"%1 (GAM%2)", &Error.Message, &Error.Code))
EndFor
else
commit
Endif
前述のように、GAM API には、セキュリティメカニズムの機能を拡張するためのメソッドが用意されています。解決済みのさまざまな使用例を提供している
GAM Examples を参照してください。ナレッジベースで GAM を有効にした後、これらの例を手動でインポートできます (<GeneXus のインストールフォルダ>\Library\GAM にある GAM_Web-Administration.xpz の中にあります)。
GAM - アクティベーションプロセス