EJBセキュリティがWebLogic Server上でどのように機能するかを理解しようとしています。私はこのようにそれを解釈WeblogicでのEJBセキュリティのコンフィグレーション
<security-role-assignment>
<role-name>beanA_users</role-name>
<principal-name>runas_a</principal-name>
</security-role-assignment>
<run-as-role-assignment>
<role-name>beanA_users</role-name>
<run-as-principal-name>runas_a</run-as-principal-name>
</run-as-role-assignment>
:
は私が
<session>
<ejb-name>BeanA</ejb-name>
....
<security-identity>
<run-as>
<role-name>beanA_users</role-name>
</run-as>
</security-identity>
</session>
<assembly-descriptor>
<security-role>
<role-name>beanA_users</role-name>
</security-role>
<container-transaction>
<method>
<ejb-name>BeanA</ejb-name>
<method-name>*</method-name>
</method>
</container-transaction>
</assembly-descriptor>
とのweblogic-ejb-jar.xmlの
のejb-jar.xmlでの構成を以下でEJBを持ってBeanAはとして実行しますbeanA_users。 "runas_a"はbeanA_usersの1つです。したがって、BeanAはrunas_aユーザーとして実行されます。また、BeanA_usersロール内のすべてのユーザーは、すべてのBeanAメソッドの呼び出しを許可されています。つまり、Bean_Aはrunas_aとして実行されており、runas_aだけがそのメソッドを呼び出すことができます。これは正しいです?しかし、このEJBを以下のコンフィグレーションを持つ別のEJBから呼び出すと、私はこの問題を解決できます。 BeanではないBeanBのBeanB_usersロールに割り当てられたプリンシパルのアクセス許可を設定しますか?
のejb-jar.xmlの:
<session>
<ejb-name>BeanB</ejb-name>
...
<security-identity>
<run-as>
<role-name>beanB_users</role-name>
</run-as>
</security-identity>
</session>
のweblogic-ejb-jar.xmlの:
<run-as-role-assignment>
<role-name>beanB_users</role-name>
<run-as-principal-name>runas_b</run-as-principal-name>
</run-as-role-assignment>
編集:
、それがどのように見えるのejb-jar.xmlのスキーマを読んだ後この例のBean Aは、<assembly-descriptor>
要素にアクセス権を定義していません。セキュリティロールのみを定義します。私はこれがすべてのEJBがそのメソッドを呼び出すことができる理由であると推測します。しかし、なぜその場合にセキュリティロールの割り当てを定義するのでしょうか?例えば、BeanAが要素内で次のものを持っていた場合、その場合、runas_bプリンシパルがパーミッションに含まれていないので、BeanBが通過するのをブロックするでしょうか?
<method-permission>
<role-name>beanA_users</role-name>
<method>
<ejb-name>BeanA</ejb-name>
<method-name>*</method-name>
</method>
</method-permission>
EJB Aを呼び出すのは何ですか? –
しかし、EJB AがEJB Xのメソッドを呼び出す場合、EJB XはEJB Aの "run-as"プリンシパルに基づいてメソッドへのメソッドアクセス許可を設定できます。これを行うには、それ自身のセキュリティロールを定義し、 ejb-jar.xmlの method-permission>要素でそのセキュリティロールの権限を定義します。私はちょうど私がEJB BからEJB Aを呼び出すときに、そのメソッドにアクセスできるのかと疑問に思っていました。私の推測では、セキュリティロールがあってもBean Aにはパーミッションが定義されていないからです。 –
EJB AはEJB Bによって呼び出されます。 –