EJB 보안이 WebLogic 서버에서 작동하는 방식을 이해하려고합니다. 나는 이런 식으로 해석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>
와 웹 로직에서 EJB-jar.xml의에서
의 ejb-jar.xml 파일의 구성을 다음과 EJB를 BeanA는 다음과 같이 실행 beanA_users. "runas_a"는 beanA_users 중 하나입니다. 따라서 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>
웹 로직에서 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 principal을 포함하지 않은 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"주체를 기반으로 메소드에 대한 메소드 액세스 권한을 설정할 수 있습니다.이를 수행하려면 자체 보안 역할을 정의하고 추가해야합니다 동일한 principal을 ejb-jar.xml의 method-permission> 요소에서 해당 보안 역할에 대한 사용 권한을 정의하십시오. 나는 EJB B에서 EJB A를 호출 할 때 그 메소드에 액세스 할 수 있는지 궁금했다. 내 생각 엔 보안 역할이 있더라도 Bean A에 사용 권한이 정의되어 있지 않기 때문입니다. –
EJB A는 EJB B에 의해 호출됩니다. –