サブジェクトリゾルバ¶
役割¶
サブジェクトリゾルバはユーザに対して該当するサブジェクトIDを解決します。
サブジェクトを解決するにはサブジェクトの実体を表す情報の取り扱いが不可欠になるため、リゾルバの実装自体は認可機構では提供しておらず、後述するインタフェースのみ定義しています。このインタフェースを実装したクラスを適宜プラグインすることでサブジェクト解決処理を実現しています。
サブジェクトリゾルバは2種のインタフェースが定義されています。
- DeclaredSubjectResolver
- OnDemandSubjectResolver
以降で順に説明します。
DeclaredSubjectResolver¶
インタフェース¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.authz.client.DeclaredSubjectResolver
このインタフェースを実装するリゾルバは、ユーザに対してログイン時から明確になっている、状況に依存しないサブジェクトの解決処理を担当します。
例としては所属会社や所属ロールなどです。
このインタフェースを持つ実装は、認可サブジェクトコンテキストを利用できる状況下では呼び出されません。ログインユーザ以外のユーザについてのサブジェクトを解決する場合などに呼び出されます。
設定¶
上記のインタフェースを実装するクラスを作成したら、それを認可機構に読み込ませる為の設定が必要です。
- 場所
- %CONTEXT_PATH%/WEB-INF/conf/declared-subject-resolvers/ 配下
- XMLスキーマ
- %CONTEXT_PATH%/WEB-INF/schema/declared-subject-resolvers.xsd
下記は設定例です。下記のように、 class-name 要素 に実装クラスの完全修飾クラス名を記述します。
<?xml version="1.0" encoding="UTF-8"?> <p:declared-subject-resolvers xmlns:p="http://www.intra-mart.jp/authz/declared-subject-resolvers/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intra-mart.jp/authz/declared-subject-resolvers/ ../../schema/declared-subject-resolvers.xsd"> <p:class-name>jp.co.intra_mart.foundation.master.authz.subjectresolver.ImCompanyPostSubjectResolver</p:class-name> <p:class-name>jp.co.intra_mart.foundation.master.authz.subjectresolver.ImDepartmentSubjectResolver</p:class-name> <p:class-name>jp.co.intra_mart.foundation.master.authz.subjectresolver.ImPublicGroupRoleSubjectResolver</p:class-name> <p:class-name>jp.co.intra_mart.foundation.master.authz.subjectresolver.ImPublicGroupSubjectResolver</p:class-name> <p:class-name>jp.co.intra_mart.foundation.master.authz.subjectresolver.ImUserSubjectResolver</p:class-name> </p:declared-subject-resolvers>
OnDemandSubjectResolver¶
インタフェース¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.authz.client.OnDemandSubjectResolver
ユーザに対して状況依存のサブジェクトの解決を担当します。認可要求時のリソースに応じてサブジェクトが変わる場合このインタフェースを実装します。
このインタフェースを持つ実装は認可判断時に毎回呼び出されます。
設定¶
上記のインタフェースを実装するクラスを作成したら、それを認可機構に読み込ませる為の設定が必要です。
- 場所
- %CONTEXT_PATH%/WEB-INF/conf/ondemand-subject-resolvers/ 配下
- XMLスキーマ
- %CONTEXT_PATH%/WEB-INF/schema/ondemand-subject-resolvers.xsd
下記は設定例です。下記のように、class-name 要素 に実装クラスの完全修飾クラス名を記述します。
<?xml version="1.0" encoding="UTF-8"?> <p:ondemand-subject-resolvers xmlns:p="http://www.intra-mart.jp/authz/ondemand-subject-resolvers/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.intra-mart.jp/authz/ondemand-subject-resolvers/ ../../schema/ondemand-subject-resolvers.xsd"> <p:class-name>sample.TimeDependResolver</p:class-name> </p:ondemand-subject-resolvers>
デフォルトで存在するサブジェクトリゾルバ¶
標準的なモジュール構成に含まれるサブジェクトリゾルバについて説明します。モジュール構成時の選択によって含まれるリゾルバは異なる場合があります。
基盤・テナント情報¶
認証状態(AuthzMetaSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.authz.subjectresolver.core.AuthzMetaSubjectResolver
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
認証状態を解決するリゾルバです。「認証済み」か、「未認証(ゲストユーザ)」かのサブジェクトを解決します。また、招待機能と外部ユーザ モジュールを含めた環境では、解決するサブジェクトに「認証済み外部ユーザ」が追加されます。
ロール(IwpRoleSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.authz.subjectresolver.im_master.IwpRoleSubjectResolver
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
- ロールのサブジェクトを解決するリゾルバです。ユーザに割り当てられているロール(サブロールを含む)が、認可設定画面でサブジェクトとして登録されている場合、そのロールをサブジェクトとして解決します。
期間(ImTermSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.authz.subjectresolver.base.ImTermSubjectResolver
- 導入バージョン
- intra-mart Accel Platform 2013 Winter
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
- 認可要求を行ったタイミングの時間が設定された期間内であるかを判断するリゾルバです。 期間が認可設定画面で定義されておりなおかつ、認可要求を行った時間が定義した期間内である場合、その期間をサブジェクトとして解決します。 期間の判断は、ユーザが設定しているタイムゾーンでの日付にて期間内であるかを判断します。
IM共通マスタ情報¶
会社組織(ImDepartmentSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.master.authz.subjectresolver.ImDepartmentSubjectResolver
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
- 会社組織のサブジェクトを解決するリゾルバです。ユーザが組織に所属しており、かつその組織が認可設定画面でサブジェクトとして登録されている場合、その組織をサブジェクトとして解決します。
認可サブジェクトコンテキストではカレント所属会社についてのみ解決しますが、このリゾルバはカレント所属会社にこだわりません。
役職(ImCompanyPostSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.master.authz.subjectresolver.ImCompanyPostSubjectResolver
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
- 役職のサブジェクトを解決するリゾルバです。ユーザに役職が割り当てられており、かつその役職が認可設定画面でサブジェクトとして登録されている場合、サブジェクトとして解決します。
パブリックグループ(ImPublicGroupSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.master.authz.subjectresolver.ImPublicGroupSubjectResolver
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
- パブリックグループのサブジェクトを解決するリゾルバです。ユーザがパブリックグループに所属しており、かつそのグループが認可設定画面でサブジェクトとして登録されている場合、サブジェクトとして解決します。
役割(ImPublicGroupRoleSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.master.authz.subjectresolver.ImPublicGroupRoleSubjectResolver
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
- 役割のサブジェクトを解決するリゾルバです。ユーザに役割が割り当てられており、かつその役割が認可設定画面でサブジェクトとして登録されている場合、サブジェクトとして解決します。
ユーザ(ImUserSubjectResolver)¶
- 完全修飾クラス名
- jp.co.intra_mart.foundation.master.authz.subjectresolver.ImUserSubjectResolver
- 実装インタフェース
- DeclaredSubjectResolver
- 処理の内容
- ユーザをサブジェクトとして解決するリゾルバです。ユーザが認可設定画面でサブジェクトとして登録されている場合、サブジェクトとして解決します。