3

JAAS プリンシパルが Web 層から Business/EJB 層に伝播する方法を理解しようとしています。

ロール/レルムがweb.xmlのlogin-configおよびsecurity-contextで構成されている場合、サーブレット コンテナーも認証されたプリンシパルを透過的に EJB 層に渡すことを読みました。

2 つの質問
1.) まず、さらに重要なことに、それは本当ですか? 開発者の介入なしで!
2.) 次に、それが内部でどのように機能するかについてのアイデア。

4

4 に答える 4

5
  1. はい、それは本当だ。これが一般的にejbのポイントであり、開発者の手から「難しい」ものを取り除くことです(たとえば、セキュリティ、トランザクション、堅牢性、マルチスレッドなど)。
  2. 実装に依存します。jboss(少なくとも4.x以前)では、リモートメソッド呼び出しがカスタムシリアル化プロトコルを使用していたことを知っています。このプロトコルには、リクエストと一緒に送信できる任意の情報の追加のマップがあります。これには、認証情報とクラスタリングをサポートするその他のものが含まれていました。ローカルメソッド呼び出しの場合、ThreadLocalsのようなものを使用すると思います。
于 2011-08-25T20:30:20.153 に答える
1

EJB 呼び出しで伝播されるさまざまな「コンテキスト」情報があります。EJB レイヤー内に入り、EJB-EJB 呼び出しを開始すると、トランザクションがその例になります。一部のコンテナでは、独自のコンテキスト オブジェクトを作成することもできます。

スレッド ローカル ストレージはプロセス内で使用できますが、通常はコンテナーが担当し、正しいことを実行できると想定してください。実際の手法は実装によって異なります。

于 2011-08-25T20:34:39.623 に答える
0

最初の質問について - はい。
2 番目の質問について - たとえば、EJB3 インターセプターに精通していますか?
コンテナーは、Bean の「インターセプト コード」を使用してプロキシ オブジェクトを作成します。さらに、コンテナーは、@PostConstruct アノテーションを検出するなど
、メソッドおよび Bean クラスの他のアノテーションを追跡できます。 ロール定義を使用して、構成(古いバージョンの jboss の login-config.xml、またはスタンドアロン構成の JBoss AS 7 の standalone.xml) をチェックし、各ロールごとの定義を理解できます。JAASは、認証と承認を介して抽象化レイヤーを提供するために使用されます。




JAAS の背後にある概念の 1 つはログイン モジュールです。これは、実際の承認と認証を処理する「プロトコル固有の」コードを提供します。
たとえば、このように Krb5LoginModule を使用して kerberos を使用しています。

于 2012-11-02T07:10:17.237 に答える
0

PrincipalWeb層からEJB層への伝播login-configは、ほとんどの部分で推測したように、web.xmlで構成されます。

実装方法は実装に依存します。ユーザー/グループ データも実装に依存し、アプリケーション サーバーの一部として構成されます。

ただし、これを行う方法の 1 つはPrincipal . これを使用すると、提供される標準フォームのログイン、基本認証、または証明書認証とは異なる認証パスを持つことができますWEB-INF/web.xmlが、少し手間がかかります。

JASPIC 認証パスを使用すると、ヘッダー ベースの認証や 2 要素認証、OpenID などのより複雑なシナリオが可能になります。ユーザーデータベースは、「通常」、アプリケーションサーバーのデータベースに関連付ける必要はありません。私が「通常」と言ったのは、WebSphere Application Server が認証をサーバー上で構成されたユーザーに結び付けているからです。

于 2017-06-20T14:11:44.243 に答える