15.6.8. パーミッションの承認モデル


Seam Security はアプリケーションに対するパーミッションの決定に対して拡張可能なフレームワークを提供します。下記のクラスダイアグラム図には、パーミッションフレームワークの主要コンポーネントの概要について示しています。
関連するクラスについての詳細を以下のセクションに示します。

15.6.8.1. PermissionResolver

個々のオブジェクトのパーミッションを解決するためのメソッドを提供するインターフェースです。 Seam は以下の組み込み PermissionResolver の実装を提供しています。 詳細については本章の後半に記載します。
  • RuleBasedPermissionResolver − Drools を使ってルールベースのパーミッションチェックを解決します。
  • PersistentPermissionResolver − リレーショナルデータベースなど永続的なストアにオブジェクトのパーミッションを保存します。
15.6.8.1.1. 独自の PermissionResolver の記述
独自のパーミッションリゾルバを実装するのは簡単です。 以下の表のように、 PermissionResolver インターフェースは実装しなければならない 2 種類のメソッドを定義します。 PermissionResolver を Seam プロジェクトにデプロイする場合、 デプロイ時に自動的にスキャンされてからデフォルトの ResolverChain で登録されます。
Expand
表15.7 PermissionResolver インターフェース
戻り値のタイプ
メソッド
詳細
boolean
hasPermission(Object target, String action)
このメソッドは現在認証済みのユーザー (Identity.getPrincipal() への呼び出しで取得) が targetaction のパラメータで指定されるパーミッションを持っているかどうかを解決します。 ユーザーが指定パーミッションを持っている場合は true を、 持っていない場合は false を返します。
void
filterSetByAction(Set<Object> targets, String action)
このメソッドは、 同じ action パラメータ値を持つ hasPermission() メソッドに渡されると true を返す指定セットからオブジェクトを削除します。

注記

ユーザーのセッションにキャッシュされるため、PermissionResolver の実装はいくつかの制約に順守していなければなりません。 まず、 セッションスコープより粒度の細かい状態は含むことはできず、 コンポーネント自体がアプリケーションスコープまたはセッションスコープのいずれかになるはずです。 次に複数のスレッドから同時にアクセスされる可能性があるため、依存インジェクションを使用してはいけません。 最適なパフォーマンスを得るには @BypassInterceptors アノテーションを付与して Seam のインターセプタスタックをすべて一緒に迂回することをお勧めします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat