3.3. Classes Subject et Principal

Pour autoriser l'accès aux ressources, les applications doivent tout d'abord authentifier les sources de la requête. Le framework JAAS définit le terme subject pour représenter une source de demande. La classe Subject est la classe centrale dans JAAS. Un Subject représente les informations d'une seule entité, comme une personne ou un service. Elle englobe les principaux de l'entité, les informations d'authentification publiques et privées. L'API JAAS utilise l'interface Java 2 java.security.Principal pour représenter un principal, qui est essentiellement un nom dactylographié.
Durant le processus d'authentification, un sujet est rempli d'identités associées ou de principaux. Un sujet peut avoir de nombreux principaux. Par exemple, une personne peut avoir un nom principal (John Doe), un numéro de sécurité sociale principal (123-45-6789) et un principal de nom d'utilisateur (johnd), tous aidant à distinguer le sujet d'autres sujets. Pour récupérer les principaux de sécurité associées à un sujet, il existe deux méthodes :
public Set getPrincipals() {...}
public Set getPrincipals(Class c) {...}
getPrincipals() renvoie tous les principaux contenus dans le subject. getPrincipals(Class c) renvoie uniquement les principaux qui sont des instances de la classe c ou d'une de ses sous-classes. Un ensemble vide sera renvoyé si le sujet n'a pas de principal correspondant.
Notez que l'interface java.security.acl.Group est une sous-interface de java.security.Principal, donc une instance de l'ensemble des principaux peut représenter un groupement logique d'autres principaux ou groupes de principaux.