JACC
プロバイダーを作成しています。
途中で、これは PolicyConfiguration
を実装することを意味します。
PolicyConfiguration
は、どのロールにどの権限が付与されるかなど、アプリケーションサーバーからの構成情報を受け入れる役割を果たします。これは Policy
が後で渡されたときに承認を決定できるようにするためです 現在のユーザーに関する情報 と彼が何をしようとしているのか。
ただし、役割とその権限、およびそれらの役割に割り当てられているPolicyConfiguration
の間のマッピングを維持することは、Principals
の(凶悪な)コントラクトの一部ではありません。
通常、常に、実際には、アプリケーションサーバーがこのマッピングを格納します。たとえば、Glassfishでは、Sun-web.xml
やSun-ejb-jar.xml
などをJava EEモジュールで提供します。これらのベンダー固有のファイルはたとえば、superusers
は、admins
のアプリケーションロールが割り当てられるグループです)。
これらのファイルが提供する機能を再利用したいのですが、できるだけ幅広いアプリケーションサーバーで使用したいと考えています。
これが-完全に恣意的-この問題に対するIBMの見解です。これは、 私がしたいことは本質的に不可能 であるという私の疑念を確認するようです。 (この特定のJava EE契約は、それが印刷されている紙の価値がありません。)
私の質問:PolicyConfiguration
内から、GlassfishとJBossをはじめに-このプリンシパルからロールへのマッピング情報を取得するにはどうすればよいですか?私が知らない標準的な方法がある場合、私はすべての耳を持っています。
簡単に言えば、標準的な方法はありません。
GlassfishとJBossはプリンシパルからロールへのマッピングをサポートしていますが、JACCはすべてのコンテナがそうであるとは想定していないため、これらのマッピングを保持する責任をJACCプロバイダーの実装に委任します。ドキュメントから(参照: PolicyConfiguration.addToRole
メソッド ):
ロールに追加されたすべての権限が「ロールにマップされた」プリンシパルに確実に付与されるようにするのは、ポリシープロバイダーの仕事です。
つまり、コンテナごとにJACCプロバイダー内で自分で実装する必要があります。たとえば、JBossの場合、 AbstractRolesMappingProvider
のサブクラスの1つを使用できます。