Class AuthContext

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

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

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract boolean
    現在実行中のユーザーが引数のpermission(権限)を保持しているかどうかを判定します。
    static void
    指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。 戻り値がvoidの場合、利用することが可能です。
    static <T> T
    doPrivileged(Supplier<T> function)
    指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。
    abstract Object
    現在のセキュリティコンテキストに紐づいている属性を取得します。 認証されたユーザーのUserエンティティのプロパティ、 また、認証プロバイダが返却したユーザー属性を取得可能です。
    abstract long
    現在のセッションが認証された時間を取得します。 未ログインユーザーの場合は、返却される値は不定です。
    現在実行中のユーザーに紐付く認証トークンのリストを取得します。
    abstract Class<? extends Credential>
    現在のログインセッションを信頼された認証にするために必要なCredentialの型を取得します。
    現時点のセキュリティ情報(AuthContext)を取得します。 AuthManagerのgetContext()メソッドを呼び出します。
    abstract String
    現在実行中のユーザーの認証ポリシー名を取得します。 代理ログインしている場合は、成り代わり先のユーザーの認証ポリシー名を取得します。
    abstract Tenant
    現在実行中のテナントを取得します。
    abstract User
    現在実行中のユーザーを取得します。 代理ログインしている場合は、成り代わり先のユーザーを取得します。
    abstract boolean
    現在のセッションが認証済みユーザーによるものか否かを取得します。
    abstract boolean
    現在のログインセッションが信頼された認証に基づいたものか否かを取得します。
    abstract boolean
    現在のAuthContextが特権実行されている状態かを取得します。
    abstract void
    現在のAuthContext(User情報、セキュリティ権限)を再読み込みします。 ユーザー情報のセキュリティに関連する属性等を変更した場合、 現在ログインしているユーザーの権限状態を最新化したい場合に呼び出します。
    abstract boolean
    現在実行中のユーザーが当該ロールかどうかを判定します。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AuthContext

      public AuthContext()
  • Method Details

    • getCurrentContext

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

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

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

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

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

      public abstract Object getAttribute(String name)

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

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

      属性名説明
      providerNameこのアカウントを認証した認証プロバイダ名
      authenticationProcessTypeこのアカウントを認証した際のAuthenticationProcessType
      Parameters:
      name -
      Returns:
    • getAuthTime

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

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

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

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

      public abstract boolean userInRole(String role)
      現在実行中のユーザーが当該ロールかどうかを判定します。
      Parameters:
      role - ロール名
      Returns:
    • checkPermission

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

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

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

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

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