パッケージ org.iplass.mtp.auth

クラス AuthContext

java.lang.Object
org.iplass.mtp.auth.AuthContext

public abstract class AuthContext
extends java.lang.Object
認証・認可に関する情報を管理するクラスです。 現在の実行スレッドに紐づけられるセキュリティ情報のスナップショットをあらわします。
  • コンストラクタの概要

    コンストラクタ 
    コンストラクタ 説明
    AuthContext()  
  • メソッドの概要

    修飾子とタイプ メソッド 説明
    abstract boolean checkPermission​(Permission permission)
    現在実行中のユーザーが引数のpermission(権限)を保持しているかどうかを判定します。
    static void doPrivileged​(java.lang.Runnable function)
    指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。
    static <T> T doPrivileged​(java.util.function.Supplier<T> function)
    指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。
    abstract java.lang.Object getAttribute​(java.lang.String name)
    現在のセキュリティコンテキストに紐づいている属性を取得します。
    abstract long getAuthTime()
    現在のセッションが認証された時間を取得します。
    abstract AuthTokenInfoList getAuthTokenInfos()
    現在実行中のユーザーに紐付く認証トークンのリストを取得します。
    abstract java.lang.Class<? extends Credential> getCredentialTypeForTrust()
    現在のログインセッションを信頼された認証にするために必要なCredentialの型を取得します。
    static AuthContext getCurrentContext()
    現時点のセキュリティ情報(AuthContext)を取得します。
    abstract java.lang.String getPolicyName()
    現在実行中のユーザーの認証ポリシー名を取得します。
    abstract Tenant getTenant()
    現在実行中のテナントを取得します。
    abstract User getUser()
    現在実行中のユーザーを取得します。
    abstract boolean isAuthenticated()
    現在のセッションが認証済みユーザーによるものか否かを取得します。
    abstract boolean isCurrentSessionTrusted()
    現在のログインセッションが信頼された認証に基づいたものか否かを取得します。
    abstract boolean isPrivileged()
    現在のAuthContextが特権実行されている状態かを取得します。
    abstract void refresh()
    現在のAuthContext(User情報、セキュリティ権限)を再読み込みします。
    abstract boolean userInRole​(java.lang.String role)
    現在実行中のユーザーが当該ロールかどうかを判定します。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

  • メソッドの詳細

    • getCurrentContext

      public static AuthContext getCurrentContext()
      現時点のセキュリティ情報(AuthContext)を取得します。 AuthManagerのgetContext()メソッドを呼び出します。
      戻り値:
    • getTenant

      public abstract Tenant getTenant()
      現在実行中のテナントを取得します。
      戻り値:
    • getUser

      public abstract User getUser()
      現在実行中のユーザーを取得します。 代理ログインしている場合は、成り代わり先のユーザーを取得します。
      戻り値:
    • getAuthTokenInfos

      public abstract AuthTokenInfoList getAuthTokenInfos()
      現在実行中のユーザーに紐付く認証トークンのリストを取得します。
      戻り値:
    • getPolicyName

      public abstract java.lang.String getPolicyName()
      現在実行中のユーザーの認証ポリシー名を取得します。 代理ログインしている場合は、成り代わり先のユーザーの認証ポリシー名を取得します。
      戻り値:
      ポリシー名
    • getAttribute

      public abstract java.lang.Object getAttribute​(java.lang.String name)

      現在のセキュリティコンテキストに紐づいている属性を取得します。 認証されたユーザーのUserエンティティのプロパティ、 また、認証プロバイダが返却したユーザー属性を取得可能です。

      利用する認証プロバイダによらず次の属性を取得可能です。

      属性名説明
      providerNameこのアカウントを認証した認証プロバイダ名
      authenticationProcessTypeこのアカウントを認証した際のAuthenticationProcessType
      パラメータ:
      name -
      戻り値:
    • getAuthTime

      public abstract long getAuthTime()
      現在のセッションが認証された時間を取得します。 未ログインユーザーの場合は、返却される値は不定です。
      戻り値:
    • isAuthenticated

      public abstract boolean isAuthenticated()
      現在のセッションが認証済みユーザーによるものか否かを取得します。
      戻り値:
    • isCurrentSessionTrusted

      public abstract boolean isCurrentSessionTrusted()
      現在のログインセッションが信頼された認証に基づいたものか否かを取得します。
      戻り値:
      信頼されている場合はtrue
    • getCredentialTypeForTrust

      public abstract java.lang.Class<? extends Credential> getCredentialTypeForTrust()
      現在のログインセッションを信頼された認証にするために必要なCredentialの型を取得します。
      戻り値:
      信頼された認証に必要なCredentialのクラス
    • userInRole

      public abstract boolean userInRole​(java.lang.String role)
      現在実行中のユーザーが当該ロールかどうかを判定します。
      パラメータ:
      role - ロール名
      戻り値:
    • checkPermission

      public abstract boolean checkPermission​(Permission permission)
      現在実行中のユーザーが引数のpermission(権限)を保持しているかどうかを判定します。
      パラメータ:
      permission - 判定したいPermissionのインスタンス
      戻り値:
      許可される場合true
    • refresh

      public abstract void refresh()
      現在のAuthContext(User情報、セキュリティ権限)を再読み込みします。 ユーザー情報のセキュリティに関連する属性等を変更した場合、 現在ログインしているユーザーの権限状態を最新化したい場合に呼び出します。
    • isPrivileged

      public abstract boolean isPrivileged()
      現在のAuthContextが特権実行されている状態かを取得します。
      戻り値:
      特権実行中の場合true
    • doPrivileged

      public static <T> T doPrivileged​(java.util.function.Supplier<T> function)
      指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。
      実装例
       //EntityManager経由の検索を権限によらず特権実行する。
       EntityManager em = ...
       
       SearchResult<Entity> res = 
           AuthContext.doPrivileged(() -> em.searchEntity(new Query("select oid from HogeEntity")));
       
      パラメータ:
      function -
      戻り値:
    • doPrivileged

      public static void doPrivileged​(java.lang.Runnable function)
      指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。 戻り値がvoidの場合、利用することが可能です。
      実装例
       //EntityManager経由の更新を権限によらず特権実行する。
       EntityManager em = ...
       Entity entity = ...
       
       AuthContext.doPrivileged(() -> {
           UpdateOption op = new UpdateOption(true);
           op.setUpdateProperties("name", "propA");
           em.update(entity, op);
       });
       
      パラメータ:
      function -