JAAS プリンシパルが Web 層から Business/EJB 層に伝播する方法を理解しようとしています。
ロール/レルムがweb.xmlのlogin-configおよびsecurity-contextで構成されている場合、サーブレット コンテナーも認証されたプリンシパルを透過的に EJB 層に渡すことを読みました。
2 つの質問
1.) まず、さらに重要なことに、それは本当ですか? 開発者の介入なしで!
2.) 次に、それが内部でどのように機能するかについてのアイデア。
JAAS プリンシパルが Web 層から Business/EJB 層に伝播する方法を理解しようとしています。
ロール/レルムがweb.xmlのlogin-configおよびsecurity-contextで構成されている場合、サーブレット コンテナーも認証されたプリンシパルを透過的に EJB 層に渡すことを読みました。
2 つの質問
1.) まず、さらに重要なことに、それは本当ですか? 開発者の介入なしで!
2.) 次に、それが内部でどのように機能するかについてのアイデア。
EJB 呼び出しで伝播されるさまざまな「コンテキスト」情報があります。EJB レイヤー内に入り、EJB-EJB 呼び出しを開始すると、トランザクションがその例になります。一部のコンテナでは、独自のコンテキスト オブジェクトを作成することもできます。
スレッド ローカル ストレージはプロセス内で使用できますが、通常はコンテナーが担当し、正しいことを実行できると想定してください。実際の手法は実装によって異なります。
最初の質問について - はい。
2 番目の質問について - たとえば、EJB3 インターセプターに精通していますか?
コンテナーは、Bean の「インターセプト コード」を使用してプロキシ オブジェクトを作成します。さらに、コンテナーは、@PostConstruct アノテーションを検出するなど
、メソッドおよび Bean クラスの他のアノテーションを追跡できます。
ロール定義を使用して、構成(古いバージョンの jboss の login-config.xml、またはスタンドアロン構成の JBoss AS 7 の standalone.xml) をチェックし、各ロールごとの定義を理解できます。JAASは、認証と承認を介して抽象化レイヤーを提供するために使用されます。
JAAS の背後にある概念の 1 つはログイン モジュールです。これは、実際の承認と認証を処理する「プロトコル固有の」コードを提供します。
たとえば、このように Krb5LoginModule を使用して kerberos を使用しています。
Principal
Web層からEJB層への伝播login-config
は、ほとんどの部分で推測したように、web.xmlで構成されます。
実装方法は実装に依存します。ユーザー/グループ データも実装に依存し、アプリケーション サーバーの一部として構成されます。
ただし、これを行う方法の 1 つは、Principal
. これを使用すると、提供される標準フォームのログイン、基本認証、または証明書認証とは異なる認証パスを持つことができますWEB-INF/web.xml
が、少し手間がかかります。
JASPIC 認証パスを使用すると、ヘッダー ベースの認証や 2 要素認証、OpenID などのより複雑なシナリオが可能になります。ユーザーデータベースは、「通常」、アプリケーションサーバーのデータベースに関連付ける必要はありません。私が「通常」と言ったのは、WebSphere Application Server が認証をサーバー上で構成されたユーザーに結び付けているからです。