12.3. Sécurité des applications EJB

12.3.1. Identité Sécurité

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

L'identité de sécurité, connue également sous le nom identité d'invocation, se réfère à la balise <security-identity> qui se trouve dans la configuration de la sécurité. Il s'agit d'une référence à l'identité qu'un autre EJB doit utiliser quand il invoque des méthodes ou des composants.
L'identité d'invocation peut soit correspondre à l'appelant actuel, ou correspondre à un rôle spécifique. Dans le premier cas, la balise <use-caller-identity> sera présente, et dans le second cas, la balise <run-as> sera utilisée.
Pour plus d'information sur la configuration de l'identité de sécurité sur un EJB, voir .

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

Exemple 12.3. Définir l'identité de sécurité d'un EJB pour qu'il soit le même que celui 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 12.4. Définir l'idendité de sécurité d'un EJB à un rôle spécifique

Pour définir une identité de sécurité à un rôle spécifique, utiliser les balises <run-as> ou <role> à l'intérieur de 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 sortant. 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.