LoginSignup
0
0

More than 1 year has passed since last update.

GeneXus Access Manager(GAM) #4 GAM Authorization

Last updated at Posted at 2021-07-28

GeneXus Access Manager(GAM) #2 ユーザアプリ認証設定(Web)にて、Webアプリに対するGAMの認証適用方法を確認しました。今回はAuthorizationの基本を確認します。

GAMのAuthorizationの概要

ざっくり理解では
- 実行時に自動的にチェックされるアクセス許可
- プログラムでチェックされるアクセス許可

の2種類があるとのこと。
いずれもGAMのPermissionをUserに直接付与、またはRollに関連付けしてそのRollをユーザに付与することで、オブジェクト起動時、またはプログラムの中で明示的に必要なPermissionを持ったユーザかをチェッするという趣旨です。

実行時の自動チェック

Webパネル等のIntegrated SecurityプロパティをAuthorizationに変更するとPermission Prefixという関連プロパティが設定できるようになります。デフォルトではそのオブジェクト名が設定されます。例えばWpAuth00というWebパネルで設定すると以下のようになり
GAM01.JPG
この状態でこのオブジェクトをビルドして、GAMBackendアプリで確認すると、「wpauth00_Execute」というPermissionが作られます。User直なり、User-Rollなりにこのwpauth00_Executeが「付与されていない」状態で、このWebパネルを起動しようとすると、「実行時の自動チェック」が動作してUnauthorized画面に遷移します。
GAM02.JPG

当然この調子で全ての画面にAuthorized設定をしていくと1 画面:1 Permission ができてしまい煩雑ですので、以下のようにしてみました。

  • WpAuth00でPermission Prefixに「WpAuth0X」を設定
  • WpAuth10でPermission Prefixに「WpAuth1X」を設定

この状態でビルドすると以下の2つのPermissionが生成されます。
GAM03.JPG

そして、WpAuth00に加え、WpAuth01、WpAuth02のPermission Prefixに「WpAuth0X」を設定、WpAuth10に加え、WpAuth11,WpAuth12のPermission Prefixに「WpAuth1X」を設定。

これで文字通り0X系の画面はWpAuth0Xが付与されたユーザ、1X系の画面はWpAuth1Xが付与されたユーザにより起動できることを確認しました。

Permissionの親子関係等、追加で確認必要ですが複数のPermissionをRollで束ねれば一通りの権限制御はできそうな感触です。

プログラムでのチェック

GAMRepositoryオブジェクトのCheckPermissionメソッドで、プログラム中でユーザが権限を持っているかのチェックが可能です。

Event 'Save'
    If GAMRepository.CheckPermission(!"Save")
        Msg(!"Saved!")
    Else
        Msg(!"You don't have enough permission to save!")
    EndIf
Endevent

のようにイベントの中でチェックしたり、Startイベントの中でそもそものボタンの表示・非表示の制御等にも使えますね。

2021年07月28日 初版

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0