12.3. Modules de sécurité inclus

Les rôles de mappage de sécurité suivants sont fournis dans JBoss EAP 6.
Code Class
PropertiesRoles org.jboss.security.mapping.providers.role.PropertiesRolesMappingProvider
SimpleRoles org.jboss.security.mapping.providers.role.SimpleRolesMappingProvider
DeploymentRoles org.jboss.security.mapping.providers.DeploymentRolesMappingProvider
DatabaseRoles org.jboss.security.mapping.providers.role.DatabaseRolesMappingProvider
LdapRoles org.jboss.security.mapping.providers.role.LdapRolesMappingProvider
LdapAttributes org.jboss.security.mapping.providers.attribute.LdapAttributeMappingProvider
DeploymentRolesMappingProvider

Un module de mappage de rôles qui prend en considération un principal pour des mappages de rôles qui peuvent être effectués dans les descripteurs de déploiement jboss-web.xml et jboss-app.xml.

Exemple 12.1. Exemple

<jboss-web>
...
  <security-role>
      <role-name>Support</role-name>
      <principal-name>Mark</principal-name> 
      <principal-name>Tom</principal-name>
  </security-role>
...
</jboss-web>
org.jboss.security.mapping.providers.DeploymentRoleToRolesMappingProvider

Un module de mappage de rôles à rôle qui prend en considération un principal pour des mappages de rôles qui peuvent être effectués dans les descripteurs de déploiement jboss-web.xml et jboss-app.xml. Dans ce cas, le nom du principal désigne un rôle qui mappe d'autres rôles.

Exemple 12.2. Exemple

  <jboss-web>
 ...
    <security-role>
      <role-name>Employee</role-name>
      <principal-name>Support</principal-name>
      <principal-name>Sales</principal-name>
    </security-role>
 ...
  </jboss-web>
Ce qui signifie que chaque principal ayant pour rôle Support ou Sales aura également le rôle Employee assigné.
org.jboss.security.mapping.providers.OptionsRoleMappingProvider

Le fournisseur de mappage de rôles qui récupère les rôles à partir des options, puis qui les ajoute au Groupe passé. Prend le mappage de style de propriétés du nom de rôle (clé) dans une liste de rôles (valeurs) séparés par des virgules.

org.jboss.security.mapping.providers.principal.SimplePrincipalMappingProvider

Un fournisseur de mappage de principal qui prend un SimplePrincipal et qui le convertit en SimplePrincipal avec un nom de principal différent.

DatabaseRolesMappingProvider

Un MappingProvider qui lit les rôles à partir d'une base de données.

Options :
  • dsJndiName : nom JNDI de la source de données utilisée pour mapper les rôles vers l'utilisateur.
  • rolesQuery : cette option doit correspondre à un énoncé préparé équivalent à "select RoleName from Roles where User=?" ? est remplacé par le nom du principal en cours.
  • suspendResume: Booléen - Suspend, puis termine la transaction associée au thread en cours tout en faisant une recherche de rôles.
  • transactionManagerJndiName: nom JNDI du Gestionnaire de transactions (la valeur par défaut est java:/TransactionManager)
LdapRolesMappingProvider

Un fournisseur de mappage qui assigne les rôles à un utilisateur à l'aide d'un serveur LDAP pour chercher les rôles.

Options :
  • bindDN: le DN utilisé pour faire la liaison avec le serveur LDAP pour les recherches de rôles et l'utilisateur. Ce DN a besoin de permissions lecture et recherche dans les valeurs de baseCtxDN et de rolesCtxDN.
  • bindCredential: le mot de passe de bindDN. Peut être encodé si le jaasSecurityDomain est spécifié.
  • rolesCtxDN: le DN fixe du contexte pour rechercher des rôles d'utilisateur. Ce n'est pas le DN où les rôles se trouvent, mais le DN où les objets contenant les rôles d'utilisateur se trouvent. Par exemple, dans un serveur Active Directory de Microsoft, c'est le DN où le compte d'utilisateur se trouve.
  • roleAttributeID: l'attribut LDAP qui contient les noms des rôles d'autorisation.
  • roleAttributeIsDN : indique si le roleAttributeID contient ou non le nom de domaine complet d'un objet de rôle. Si false, le nom de rôle est tiré de la valeur de l'attribut roleNameAttributeId du nom de contexte. Certains schémas de répertoire, tel que Active Directory, requièrent que cet attribut soit défini à true.
  • roleNameAttributeID : nom de l'attribut qui se trouve dans le contexte roleCtxDN contenant le nom de rôle. Si la propriété roleAttributeIsDN est définie à true, cette propriété sera utilisée pour trouver l'attribut du nom de l'objet du rôle.
  • parseRoleNameFromDN: un indicateur qui signale si le DN retourné par une requête contient le roleNameAttributeID. Si la valeur est définie à true, one cherchera le roleNameATtributeID du DN. Si la valeur est false, on ne cherchera pas le roleNameAttributeID du DN. Cet indicateur peut améliorer les performances des requêtes LDAP.
  • roleFilter : un filtre de recherche permettant de localiser les rôles associés à l'utilisateur authentifié. L'entrée user ou userDN obtenue à partir du rappel de module de connexion est substitué dans le filtre à chaque fois qu'une expression {0} est utilisée. L'utilisateurDN userDN authentifié sera substitué dans le filtre à chaque fois qu'un {1} est utilisé. Un exemple de filtre de recherche qui correspond au nom d'utilisateur d'entrée serait (member={0}). Voici une alternative correspondant au userDN authentifié : (member={1})
  • roleRecursion : le nombre de niveaux de récursivité de la recherche de rôle dans un contexte de correspondance donné. Désactiver la récursivité en attribuant le paramètre 0.
  • searchTimeLimit: la valeur d'expiration en millisecondes pour les recherches utilisateur/rôle. La valeur par défaut est 10000 (10 secondes).
  • searchScope: l'étendue de recherche à utiliser.
PropertiesRolesMappingProvider

Un MappingProvider qui lit des rôles à partir d'un fichier de propriétés dans le format suivant : username=role1,role2,...

Options :
  • rolesProperties: nom de fichier formaté de propriétés. L'expansion des variables de JBoss peuvent être utilisées sous la forme ${jboss.variable}.
SimpleRolesMappingProvider

Simple MappingProvider qui lit des rôles à partir de la mappe d'options. Le nom d'attribut de l'option est le nom du principal à qui assigner des rôles et la valeur de l'attribut correspond aux noms de rôles séparés par des virgules à assigner au principal.

Exemple 12.3. Exemple

<module-option name="JavaDuke" value="JBossAdmin,Admin"/> 
<module-option name="joe" value="Users"/>
org.jboss.security.mapping.providers.attribute.DefaultAttributeMappingProvider

Vérifie le module et cherche le nom de principal dans le contexte de mappage pour créer une adresse email d'attribut à partir d'une option de module nommée principalName + ".email" et la donner au principal donné.

LdapAttributeMappingProvider

Attributs de mappage de LDAP vers le sujet. Les options incluent les options que votre fournisseur LDAP JNDI prend en charge.

Exemple 12.4. Exemples de noms de propriété standard :

Context.INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial"
Context.SECURITY_PROTOCOL = "java.naming.security.protocol"
Context.PROVIDER_URL = "java.naming.provider.url"
Context.SECURITY_AUTHENTICATION = "java.naming.security.authentication"
Options :
  • bindDN: le DN utilisé pour faire la liaison avec le serveur LDAP pour les recherches de rôles et l'utilisateur. Ce DN a besoin de permissions lecture et recherche dans les valeurs de baseCtxDN et de rolesCtxDN.
  • bindCredential: le mot de passe de bindDN. Peut être encodé si le jaasSecurityDomain est spécifié.
  • baseCtxDN : le DN fixe de contexte pour commencer la recherche utilisateur
  • baseFilter: un filtre de recherche permettant de localiser le contexte de l'utilisateur à authentifier. L'entrée username ou userDN obtenue à partir du rappel de module de connexion est substituée dans le filtre à chaque fois qu'une expression {0} est utilisée. Ce comportement de substitution vient de la méthode __DirContext.search(Name, String, Object[], SearchControls cons)__. (uid={0}) est un exemple commun de filtre de recherche.
  • searchTimeLimit: la valeur d'expiration en millisecondes pour les recherches utilisateur/rôle. La valeur par défaut est 10000 (10 secondes).
  • attributeList: une liste d'attributs séparée par des virgules pour l'utilisateur. Exemple : mail,cn,sn,employeeType,employeeNumber.
  • jaasSecurityDomain : Le JaasSecurityDomain à utiliser pour décrypter le java.naming.security.principal. La forme cryptée du mot de passe retourné par la méthode JaasSecurityDomain#encrypt64(byte[]). Vous pouvez également utiliser la classe org.jboss.security.plugins.PBEUtils pour générer la forme cryptée.