intra-mart Accel Platform 認可仕様書 第14版 2020-08-01

サブジェクトリゾルバ

役割

サブジェクトリゾルバはユーザに対して該当するサブジェクト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
処理の内容
ユーザをサブジェクトとして解決するリゾルバです。ユーザが認可設定画面でサブジェクトとして登録されている場合、サブジェクトとして解決します。