11.2. Sécurité des applications EJB

11.2.1. Identité Sécurité

11.2.1.1. L'identité de sécurité EJB

Un EJB peut spécifier une identité à utiliser quand on invoque des méthodes sur d'autres composants. Il s'agit de security identity (également connu sous le nom invocation identity) de l'EJB.
Par défaut, l'EJB utilise sa propre identité d'appelant. L'identité peut également être définie à un rôle de sécurité spécifique. Les rôles de sécurité spécifiques sont utiles si vous voulez construire un modèle de sécurité segmenté - afin de, par exemple, restreindre l'accès à un ensemble de composants EJB internes uniquement.

11.2.1.2. Définir l'identité de sécurité d'un EJB

L'identité de sécurité de l'EJB est indiqué dans une balise <security-identity> dans la configuration de la sécurité.
Par défaut - si aucune balise <security-identity> n'est présente - l'identité de l'appelant de l'EJB sera utilisée.

Exemple 11.3. Définir l'identité de sécurité d'un EJB pour que ce soit la même que celle de l'appelant

Cet exemple définit l'identité de sécurité pour les invocations de méthode faîtes par un EJB de façon à ce qu'elle soit la même identité que celle de l'appelant actuel. Ce comportement correspond au comportement par défaut si vous ne spécifiez pas une déclaration d'élément <security-identity>.
<ejb-jar>
  <enterprise-beans>
	 <session>
		<ejb-name>ASessionBean</ejb-name>
		<!-- ... -->
		<security-identity>
		  <use-caller-identity/>
		</security-identity>
	 </session>
	 <!-- ... -->
  </enterprise-beans>
</ejb-jar>

Exemple 11.4. Définir l'idendité de sécurité d'un EJB à un rôle spécifique

Pour définir l'id de sécurité à un rôle spécifique, utiliser <run-as> et les balises <role-name> dans la balise <security-identity>.
<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>
Par défaut, quand vous utilisez <run-as>, un principal nommé anonymous est assigné aux appels sortants. Pour assigner un autre principal, utiliser <run-as-principal>.
<session>
    <ejb-name>RunAsBean</ejb-name>
    <security-identity>
        <run-as-principal>internal</run-as-principal>
    </security-identity>
</session>

Note

Vous pouvez utiliser les éléments <run-as> et <run-as-principal> à l'intérieur d'un élément de servlet.