Package org.iplass.mtp.auth
Class AuthContext
java.lang.Object
org.iplass.mtp.auth.AuthContext
認証・認可に関する情報を管理するクラスです。
現在の実行スレッドに紐づけられるセキュリティ情報のスナップショットをあらわします。
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract boolean
checkPermission
(Permission permission) 現在実行中のユーザーが引数のpermission(権限)を保持しているかどうかを判定します。static void
doPrivileged
(Runnable function) 指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。 戻り値がvoidの場合、利用することが可能です。static <T> T
doPrivileged
(Supplier<T> function) 指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。abstract Object
getAttribute
(String name) 現在のセキュリティコンテキストに紐づいている属性を取得します。 認証されたユーザーのUserエンティティのプロパティ、 また、認証プロバイダが返却したユーザー属性を取得可能です。abstract long
現在のセッションが認証された時間を取得します。 未ログインユーザーの場合は、返却される値は不定です。abstract AuthTokenInfoList
現在実行中のユーザーに紐付く認証トークンのリストを取得します。abstract Class
<? extends Credential> 現在のログインセッションを信頼された認証にするために必要なCredentialの型を取得します。static AuthContext
現時点のセキュリティ情報(AuthContext)を取得します。 AuthManagerのgetContext()メソッドを呼び出します。abstract String
現在実行中のユーザーの認証ポリシー名を取得します。 代理ログインしている場合は、成り代わり先のユーザーの認証ポリシー名を取得します。abstract Tenant
現在実行中のテナントを取得します。abstract User
getUser()
現在実行中のユーザーを取得します。 代理ログインしている場合は、成り代わり先のユーザーを取得します。abstract boolean
現在のセッションが認証済みユーザーによるものか否かを取得します。abstract boolean
現在のログインセッションが信頼された認証に基づいたものか否かを取得します。abstract boolean
現在のAuthContextが特権実行されている状態かを取得します。abstract void
refresh()
現在のAuthContext(User情報、セキュリティ権限)を再読み込みします。 ユーザー情報のセキュリティに関連する属性等を変更した場合、 現在ログインしているユーザーの権限状態を最新化したい場合に呼び出します。abstract boolean
userInRole
(String role) 現在実行中のユーザーが当該ロールかどうかを判定します。
-
Constructor Details
-
AuthContext
public AuthContext()
-
-
Method Details
-
getCurrentContext
現時点のセキュリティ情報(AuthContext)を取得します。 AuthManagerのgetContext()メソッドを呼び出します。- Returns:
-
getTenant
現在実行中のテナントを取得します。- Returns:
-
getUser
現在実行中のユーザーを取得します。 代理ログインしている場合は、成り代わり先のユーザーを取得します。- Returns:
-
getAuthTokenInfos
現在実行中のユーザーに紐付く認証トークンのリストを取得します。- Returns:
-
getPolicyName
現在実行中のユーザーの認証ポリシー名を取得します。 代理ログインしている場合は、成り代わり先のユーザーの認証ポリシー名を取得します。- Returns:
- ポリシー名
-
getAttribute
現在のセキュリティコンテキストに紐づいている属性を取得します。 認証されたユーザーの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
現在のログインセッションを信頼された認証にするために必要なCredentialの型を取得します。- Returns:
- 信頼された認証に必要なCredentialのクラス
-
userInRole
現在実行中のユーザーが当該ロールかどうかを判定します。- Parameters:
role
- ロール名- Returns:
-
checkPermission
現在実行中のユーザーが引数のpermission(権限)を保持しているかどうかを判定します。- Parameters:
permission
- 判定したいPermissionのインスタンス- Returns:
- 許可される場合true
-
refresh
public abstract void refresh()現在のAuthContext(User情報、セキュリティ権限)を再読み込みします。 ユーザー情報のセキュリティに関連する属性等を変更した場合、 現在ログインしているユーザーの権限状態を最新化したい場合に呼び出します。 -
isPrivileged
public abstract boolean isPrivileged()現在のAuthContextが特権実行されている状態かを取得します。- Returns:
- 特権実行中の場合true
-
doPrivileged
指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。
実装例
//EntityManager経由の検索を権限によらず特権実行する。 EntityManager em = ... SearchResult<Entity> res = AuthContext.doPrivileged(() -> em.searchEntity(new Query("select oid from HogeEntity")));
- Parameters:
function
-- Returns:
-
doPrivileged
指定のfunctionを特権実行(セキュリティ制約がない状態で実行)します。 戻り値がvoidの場合、利用することが可能です。
実装例
//EntityManager経由の更新を権限によらず特権実行する。 EntityManager em = ... Entity entity = ... AuthContext.doPrivileged(() -> { UpdateOption op = new UpdateOption(true); op.setUpdateProperties("name", "propA"); em.update(entity, op); });
- Parameters:
function
-
-