Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

17.4. Sécurité des applications EJB

17.4.1. Identité Sécurité

17.4.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.

17.4.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 17.5. 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 17.6. 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.