6장. Jakarta Enterprise Beans 애플리케이션 보안

6.1. 보안 ID

6.1.1. Jakarta Enterprise Beans 보안 ID 정보

Jakarta Enterprise Beans는 다른 구성 요소에서 방법을 호출할 때 사용할 ID를 지정할 수 있습니다. 이는 호출 ID라고도 하는 Jakarta Enterprise Beans 보안 ID입니다.

기본적으로 Jakarta Enterprise Beans는 자체 호출자 ID를 사용합니다. ID는 또는 특정 보안 역할로 설정할 수 있습니다. 특정 보안 역할을 사용하면 세그먼트된 보안 모델을 구성하려는 경우(예: 구성 요소 집합에 대한 액세스를 내부 Jakarta Enterprise Beans로만 제한).

6.1.2. Jakarta Enterprise Bean의 보안 ID 설정

Jakarta Enterprise Beans의 보안 ID는 보안 구성의 <security-identity> 태그를 통해 지정됩니다. <security-identity> 태그가 없으면 기본적으로 Jakarta Enterprise Bean의 호출자 ID가 사용됩니다.

예제: Jakarta Enterprise Bean의 보안 ID를 호출자로 설정

이 예에서는 Jakarta Enterprise Beans에서 만든 메서드 호출에 대한 보안 ID를 현재 호출자의 ID와 동일하게 설정합니다. <security-identity> 요소 선언을 지정하지 않으면 이 동작이 기본값입니다.

<ejb-jar>
  <enterprise-beans>
     <session>
        <ejb-name>ASessionBean</ejb-name>
        ...
        <security-identity>
          <use-caller-identity/>
        </security-identity>
     </session>
     ...
  </enterprise-beans>
</ejb-jar>

예제: Jakarta Enterprise Bean의 보안 ID를 특정 역할로 설정

보안 ID를 특정 역할로 설정하려면 < security-identity> 태그 내에 <run-as> 및 <role-name > 태그를 사용합니다.

<ejb-jar>
  <enterprise-beans>
     <session>
        <ejb-name>RunAsBean</ejb-name>
        ...
        <security-identity>
          <run-as>
             <description>A private internal role</description>
             <role-name>InternalRole</role-name>
          </run-as>
        </security-identity>
     </session>
  </enterprise-beans>
  ...
</ejb-jar>

기본적으로 <run-as> 를 사용하면 anonymous 라는 주체가 발신 호출에 할당됩니다. 다른 주체를 할당하려면 <run-as-principal> 을 사용합니다.

<session>
    <ejb-name>RunAsBean</ejb-name>
    <security-identity>
        <run-as-principal>internal</run-as-principal>
    </security-identity>
</session>
참고

서블릿 요소 내에서 <run-as><run-as-principal> 요소를 사용할 수도 있습니다.