Chapitre 11. Référence Administration Sécurité

11.1. Modules d'authentification inclus

Les modules d'authentification suivants sont inclus dans JBoss Enterprise Application Platform. Certains d'entre eux gèrent l'autorisation ainsi que l'authentification. Ceux-ci incluent généralement le mot Role dans le nom de Code
Quand vous configurez ces modules, utiliser la valeur Code ou le nom complet (package) pour vous référer au module.

Tableau 11.1. Client

Code
Client
Class
org.jboss.security.ClientLoginModule
Description
Ce module de connexion est conçu pour établir l'identité de l'appelant et les informations d'identification lorsque JBoss Enterprise Application Platform agit en tant que client. Il ne doit jamais servir sous forme de domaine de sécurité pour l'authentification serveur.

Tableau 11.2. Options de Modules Client

Option Type Par défaut Description
multi-threaded
true ou false
false
Définir la valeur sur true si chaque thread possède son propre stockage d'informations d'identification et principal. La valeur false pour indiquer que tous les threads de la machine virtuelle partagent la même identité et informations d'identification.
password-stacking
useFirstPass ou false
false
Définir la valeur sur useFirstPass pour indiquer que ce module de connexion doive rechercher les informations stockées dans le LoginContext à utiliser comme identité. Cette option peut être utilisée lorsque vous empilez les autres modules de connexion avec.
>restore-login-identity
true ou false
false
Définir sur true si l'identité et les informations d'identification du début le la méthode login() doivent être restaurées une fois que la méthode logout() est invoquée.

Tableau 11.3. Certificate

Code
Certificate
Class
org.jboss.security.auth.spi.BaseCertLoginModule
Description
Ce module de connexion est conçu pour authentifier les utilisateurs basés sur des X509 Certificates. Un cas d'utilisation pour ceci est l'authentification CLIENT-CERT d'une application web.

Tableau 11.4. Options de module Certificate

Option Type Par défaut Description
securityDomain
chaîne
aucun
Nom du domaine de sécurité qui possède la configuration JSSE du truststore qui contient les certificats approuvés.
verifier
Class
aucun
Le nom de classe du org.jboss.security.auth.certs.X509CertificateVerifier à utiliser pour vérifier le certificat de connexion.

Tableau 11.5. CertificateUsers

Code
CertificateUsers
Class
org.jboss.security.auth.spi.UsersRolesLoginModule
Description
Utilise deux ressources de propriété. La première mappe les noms d'utilisateur aux mots de passe, et la seconde mappe les noms d'utilisateurs aux rôles.

Tableau 11.6. Options de module CertificateUsers

Option Type Par défaut Description
unauthenticatedIdentity
Une chaîne
aucun
Définit le nom principal devant être affecté aux demandes qui ne contiennent aucune information d'authentification. Cela peut permettre à des servlets non protégés d'appeler des méthodes sur EJB ne nécessitant pas un rôle spécifique. Un tel principal ne possédera aucun rôle associé et ne ne pourra accéder qu'aux méthodes EJB ou EJB non sécurisées associées à la contrainte de permission non contrôlée.
password-stacking
useFirstPass ou false
false
Définir la valeur sur useFirstPass pour indiquer que ce module de connexion doive rechercher les informations stockées dans le LoginContext à utiliser comme identité. Cette option peut être utilisée lorsque vous empilez les autres modules de connexion avec celui-ci.
hashAlgorithm Une chaîne
aucun
Le nom de l'algorithme java.security.MessageDigest à utiliser pour hacher le mot de passe. Il n'y a pas de valeur par défaut pour cette option, donc vous devez la définir explicitement pour permettre le hachage. Quand hashAlgorithm est spécifié, le mot de passe en texte clair obtenu de CallbackHandler sera haché avant de passer à UsernamePasswordLoginModule.validatePassword comme argument d'inputPassword. Le expectedPassword stocké dans le fichier users.properties doit être haché de façon similaire. Voir http://docs.oracle.com/javase/6/docs/api/java/security/MessageDigest.html pour obtenir des informations sur java.security.MessageDigest
hashEncoding
base64 ou hex
base64
Le format du string du mot de passe haché, si hashAlgorithm est défini également.
hashCharSet
Une chaîne
Le codage par défaut défini dans l'environnement du conteneur.
Le codage utilisé pour convertir le mot de passe de texte en clair en un tableau d'octets.
usersProperties
Le chemin d'accès complet et le nom d'une ressource ou d'un fichier de propriétés
users.properties
Le fichier qui contient les mappages entre les utilisateurs et les mots de passe. Chaque propriété du fichier a le format username=password.
rolesProperties
Le chemin d'accès complet et le nom d'une ressource ou d'un fichier de propriétés
roles.properties
Le fichier qui contient les mappages entre les utilisateurs et les rôles. Chaque propriété du fichier a le format username=role1,role2,...,roleN
ignorePasswordCase
true ou false
false
Si la comparaison de mot de passe doit ignorer la casse. Ceci est utile pour le codage de mots de passe hachés quand le mot de passe haché n'est pas significatif.
principalClass
Un nom de classe complet.
aucun
Une classe d'implémentation de Principalcontenant un constructeur qui prend l'argument du String comme nom de principal.
roleGroupSeparator
Un seul caractère
. (un seul point)
Le caractère utilisé pour séparer le nom d'utilisateur du nom de groupe de rôle dans le fichier rolesGroup.
defaultUsersProperties
chaîne
defaultUsers.properties
Nom de la ressource ou du fichier où se replier si le fichier usersProperties est introuvable.
defaultRolesProperties
chaîne
defaultRoles.properties
Nom de la ressource ou du fichier où se replier si le fichier rolesProperties est introuvable.
hashUserPassword
true ou false
true
Indique si on doit hacher le mot de passe entré par l'utilisateur, lorsqu'hashAlgorithm est indiqué. La valeur par défaut est true.
hashStorePassword
true ou false
true
Indique le mot de passe de store retourné quand le getUsersPassword() doit être haché, quand hashAlgorithm est spécifié.
digestCallback
Un nom de classe complet.
aucun
Le nom de classe de l'implémentation org.jboss.crypto.digest.DigestCallback qui inclut le contenu pre/post digest comme les valeurs salt. Utilisé uniquement si l'hashAlgorithm est spécifié.
storeDigestCallback
Un nom de classe complet.
aucun
Le nom de classe de l'implémentation org.jboss.crypto.digest.DigestCallback qui inclut le contenu pre/post digest comme les valeurs salt pour hacher le mot de passe du store. Utilisé uniquement si l'hashStoreAlgorithm est sur true et si hashAlgorithm est spécifié.
callback.option.STRING
Divers aucun
Toutes les options ayant comme préfixe callback.option. sont passées à la méthode DigestCallback.init(Map). Le nom d'utilisateur entré est toujours passé par l'option javax.security.auth.login.name, et le mot de passe input/store password est passé par l'option javax.security.auth.login.password au digestCallback ou au storeDigestCallback.

Tableau 11.7. CertificateRoles

Code
CertificateRoles
Class
org.jboss.security.auth.spi.CertRolesLoginModule
Description
Ce module de connexion étend le module de connexion de certificat pour ajouter des fonctions de mappage de rôle à partir d'un fichier de propriétés. Il prend les mêmes options que le module de connexion du certificat et ajoute les options suivantes.

Tableau 11.8. Options de module CertificateRoles

Option Type Par défaut Description
rolesProperties
Une chaîne
roles.properties
Le nom de la ressource ou du fichier contenant les rôles à attribuer à chaque utilisateur. Le fichier de propriétés de rôle doit être dans sous format nom d'utilisateur=role1,role2, où le nom d'utilisateur est le nom unique du certificat, sans signe égal ou espace blanc. L'exemple suivant est dans le bon format :
CN\=unit-tests-client,\ OU\=Red\ Hat\ Inc.,\ O\=Red\ Hat\ Inc.,\ ST\=North\ Carolina,\ C\=US=JBossAdmin
defaultRolesProperties
Une chaîne
defaultRoles.properties
Nom de la ressource ou du fichier où se replier si le fichier rolesProperties est introuvable.
roleGroupSeparator
Un seul caractère
. (un seul point)
Le caractère à utiliser comme séparateur de groupe rôle dans le fichier de roleProperties

Tableau 11.9. Database

Code Database
Class
org.jboss.security.auth.spi.DatabaseServerLoginModule
Description
Un module de connexion basé-JDBC supportant le mappage de rôle et l'authentification. Basé sur deux tables logiques, avec les définitions suivantes.
  • Principals: PrincipalID (text), Password (text)
  • Roles: PrincipalID (text), Role (text), RoleGroup (text)

Tableau 11.10. Database Module Options

Option Type Par défaut Description
dsJndiName
Ressource JNDI
aucun
Le nom de la ressource JNDI qui store les informations d'authentification. Cette option est requise.
principalsQuery
Énoncé SQL
select Password from Principals where PrincipalID=?
La requête SQL préparée pour obtenir les informations sur le principal.
rolesQuery
Énoncé SQL
select Role, RoleGroup from Roles where PrincipalID=?
Enoncé SQL préparé en vue d'exécuter pour mapper les rôles. Doit être équivalent à select Role, RoleGroup from Roles where PrincipalID=?, avec Role comme nom de rôle et la valeur de la colonne RoleGroup doit toujours être Roles. avec un R majuscule.

Tableau 11.11. DatabaseCertificate

Code
DatabaseCertificate
Class
org.jboss.security.auth.spi.DatabaseCertLoginModule
Description
Ce module de connexion étend le module de connexion de certificat pour ajouter des fonctions de mappage de rôle d'une table de bases de données. Il possède les mêmes options mais aussi ces options supplémentaires :

Tableau 11.12. DatabaseCertificate Module Options

Option Type Par défaut Description
dsJndiName
Ressource JNDI
Le nom de la ressource JNDI qui store les informations d'authentification. Cette option est requise.
rolesQuery
Énoncé SQL
select Role,RoleGroup from Roles where PrincipalID=?
Enoncé SQL préparé en vue d'exécuter pour mapper les rôles. Doit être équivalent à select Role, RoleGroup from Roles where PrincipalID=?, avec Role comme nom de rôle et la valeur de la colonne RoleGroup doit toujours être Roles. avec un R majuscule.
suspendResume
true ou false
true
Indique si une transaction JTA existante doit être suspendue pendant les opérations de base de données.

Tableau 11.13. Identity

Code
Identity
Class
org.jboss.security.auth.spi.IdentityLoginModule
Description
Associe le principal spécifié dans les options de module avec n'importe quel sujet authentifié dans le module. Le type de classe de principal utilisée est org.jboss.security.SimplePrincipal.. Si aucune option de principal n'est spécifiée, on utilisera un principal ayant pour nom guest.

Tableau 11.14. Options de module Identity

Option Type Par défaut Description
principal
Une chaîne
guest
Le nom à utiliser pour le principal.
roles
Une liste de strings séparée par des virgules
aucun
Une liste de rôles séparée par des virgules qui sera assignée au sujet.

Tableau 11.15. Ldap

Code
Ldap
Class
org.jboss.security.auth.spi.LdapLoginModule
Description
Authentifie sur un serveur LDAP, lorsque le nom d'utilisateur et le mot de passe sont stockés dans un serveur LDAP qui est accessible à l'aide d'un fournisseur LDAP JNDI. Bon nombre des options ne sont pas requises, car elles sont déterminées par le fournisseur LDAP ou l'environnement.

Tableau 11.16. Options de module Ldap

Option Type Par défaut Description
java.naming.factory.initial
class name
com.sun.jndi.ldap.LdapCtxFactory
Nom de classe de l'implémentation InitialContextFactory.
java.naming.provider.url
ldap:// URL
aucun
URL pour le serveur LDAP
java.naming.security.authentication
none, simple, ou le nom d'un mécanisme SASL
simple
Le niveau de sécurité à utiliser pour la liaison avec le serveur LDAP.
java.naming.security.protocol
Protocole de transport
Si non spécifié, déterminé par le fournisseur.
Le protocole de transport à utiliser pour l'accès sécurisé, comme SSL.
java.naming.security.principal
Une chaîne
aucun
Le nom du principal permettant d'authentifier l'appelant vers le service. Il est construit à partir des autres propriétés décrites ci-dessous.
java.naming.security.credentials
Un type d'information d'identification
aucun
Le type d'information d'identification utilisée par le schéma d'authentification. Exemples : mot de passe haché, mot de passe de texte clair, clé ou certificat. Si cette propriété n'est pas spécifiée, le comportement est déterminé par le fournisseur de service.
principalDNPrefix
Une chaîne
aucun
Préfixe ajouté au nom d'utilisateur pour former le DN de l'utilisateur. Vous pouvez demander à l'utilisateur un nom d'utilisateur et créer le nom de domaine DN complet en utilisant principalDNPrefix et principalDNSuffix.
principalDNSuffix
chaîne
Suffixe ajouté au nom d'utilisateur pour former le DN de l'utilisateur. Vous pouvez demander à l'utilisateur un nom d'utilisateur et créer le nom de domaine DN complet en utilisant principalDNPrefix et principalDNSuffix.
useObjectCredential
true ou false
false
Si les informations d'identification doivent être obtenues sous forme d'objet opaque à l'aide du type de Callback org.jboss.security.auth.callback.ObjectCallback plutôt que comme mot de passe char[] utilisant un JAAS PasswordCallback. Cela permet de passer les informations d'identification non-char[] au serveur Ldap.
rolesCtxDN
DN complet
aucun
Le DN complet pour le contexte à chercher pour les rôles d'utilisateur.
userRolesCtxDNAttributeName
Attribut
aucun
L'attribut dans l'objet utilisateur qui contient le nom unique DN pour que le contexte rechercher des rôles d'utilisateur. Cela diffère de rolesCtxDN dans ce contexte de recherche car les rôles d'un utilisateur peuvent être uniques pour chaque utilisateur.
rolesAttributeID
Attribut
roles
Nom de l'attribut qui contient les rôles d'utilisateur.
rolesAttributeIsDN
true ou false
false
Indique si le roleAttributeID contient 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.
rolesNameAttributeID
Attribut
group
Nom de l'attribut du contexte de roleCtxDN qui contient le nom de rôle. Si la propriété roleAttributeIsDN est définie sur true, cette propriété sera utilisée pour rechercher l'attribut de nom de l'objet rôle.
uidAttributeID
Attribut
uid
Nom de l'attribut qui contient le UserRolesAttributeDN correspondant à l'ID d'utilisateur. Utilisé pour localiser les rôles d'utilisateur.
matchOnUserDN
true ou false
false
Si la recherche de rôles d'utilisateur doit correspondre au DN de l'utilisateur entièrement distinct ou au nom d'utilisateur uniquement. Si true, l'userDN complet sera utilisé comme valeur de correspondance. Si false, seul le nom d'utilisateur sera utilisé comme valeur de correspondance pour l'attribut UserRolesAttributeDN.
allowEmptyPasswords
true ou false
true
Indique si on doit autoriser les mots de passe vides. La plupart des serveurs LDAP traitent les mots de passe vides comme des tentatives de connexion anonymes. Pour rejeter les mots de passe vides, définir à false.

Tableau 11.17. LdapExtended

Code
LdapExtended
Class
org.jboss.security.auth.spi.LdapExtLoginModule
Description
Une autre implémentation de module de connexion LDAP qui utilise les recherches pour localiser l'utilisateur de liaisons et rôles associés. La requête de rôles suit récursivement les noms de domaines DN pour naviguer dans une structure de rôles hiérarchique. Il utilise les mêmes options java.naming que le module Ldap, et utilise les options suivantes à la place des autres options du module Ldap.
L'authentification a lieu en 2 étapes :
  1. Une première liaison au serveur LDAP est faite par les options bindCredential. bindDN est l'utilisateur ayant la possibilité de rechercher les arborescences baseCtxDN et rolesCtxDN pour l'utilisateur et les rôles. Le DN pour authentifier l'utilisateur est interrogé en utilisant le filtre spécifié par l'attribut baseFilter.
  2. Le DN de l'utilisateur qui en résulte est authentifié par la liaison au serveur LDAP en utilisant le DN de l'utilisateur comme environnement de InitialLdapContext Context.SECURITY_PRINCIPAL. La propriété Context.SECURITY_CREDENTIALS est définie avec le mot de passe String obtenu par le gestionnaire de rappel.

Tableau 11.18. Options de module LdapExtended

Option Type Par défaut Description
baseCtxDN
DN complet
aucun
Le DN fixe de contexte de niveau supérieur pour commencer la recherche utilisateur.
bindDN
DN complet
aucun
Le DN utilisé pour la liaison au serveur LDAP pour les requêtes d'utilisateurs et de rôles. Ce nom unique a besoin d'autorisations de lecture et de recherche pour les valeurs baseCtxDN et rolesCtxDN.
bindCredential
Un string, parfois crypté
aucun
Le mot de passe pour le bindDN. Peut être crypté si le jaasSecurityDomain est spécifié.
jaasSecurityDomain
JMX ObjectName
aucun
L' ObjectName JMX du JaasSecurityDomain à utiliser pour décrypter les bindCredential. La forme cryptée du mot de passe correspond au format retourné par la méthode JaasSecurityDomain.encrypt64(byte[]).
baseFilter
String de filtre LDAP
aucun
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é dans le filtre à chaque fois qu'une expression {0} est utilisée. Un exemple de filtre de recherche est (uid={0}).
rolesCtxDN
DN complet
aucun
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.
roleFilter
String de filtre LDAP
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}). Un autre correspondant au userDN authentifié pourrait être (member={1}).
roleAttributeIsDN
true ou false
false
Indique si le roleAttributeID contient 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.
defaultRole
Un nom de rôle.
aucun
Un rôle inclus pour tous les utilisateurs authentifiés
parseRoleNameFromDN
true ou false
false
Un indicateur qui signale si le DN retourné par une requête contient le roleNameAttributeID. Si la valeur est true, le DN est vérifié pour le roleNameATtributeID. Si la valeur est false, le DN n'est pas coché pour le roleNameAttributeID. Cet indicateur peut améliorer les performances des requêtes LDAP.
parseUsername
true ou false
false
Un indicateur qui signale si le DN doit être vérifié niveau nom d'utilisateur. Si la valeur est true, le DN est vérifié niveau nom d'utilisateur. Si la valeur est false, le DN n'est pas vérifié au niveau nom d'utilisateur. Cet option peut à la fois être utilisée pour usernameBeginString et usernameEndString.
usernameBeginString
une chaîne
aucun
Définit le string qui doit être supprimé au début du DN pour révéler le nom d'utilisateur. Cette option est utilisée avec usernameEndString.
usernameEndString
une chaîne
aucun
Définit le string qui doit être supprimé à la fin du DN pour révéler le nom d'utilisateur. Cette option est utilisée avec userBeginString.
roleNameAttributeID
Attribut
group
Nom de l'attribut du contexte de roleCtxDN qui contient le nom de rôle. Si la propriété roleAttributeIsDN est définie sur true, cette propriété sera utilisée pour rechercher l'attribut de nom de l'objet rôle.
distinguishedNameAttribute
Attribut
distinguishedName
Le nom de l'attribut dans l'entrée de l'utilisateur qui contient le nom unique de l'utilisateur. Ceci peut être nécessaire si le DN de l'utilisateur lui-même contient des caractères spéciaux (barre oblique inverse par exemple) qui empêchent le mappage de l'utilisateur. Si l'attribut n'existe pas, le DN de l'entrée sera utilisé.
roleRecursion
Un entier relatif
0
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
Un entier relatif
10000 (10 seconds)
Timeout en millisecondes pour les recherches utilisateur/rôle.
searchScope
Un parmi : OBJECT_SCOPE, ONELEVEL_SCOPE, SUBTREE_SCOPE
SUBTREE_SCOPE
Étendue à utiliser.
allowEmptyPasswords
true ou false
true
Indique si on doit autoriser les mots de passe vides. La plupart des serveurs LDAP traitent les mots de passe vides comme des tentatives de connexion anonymes. Pour rejeter les mots de passe vides, définir à false.

Tableau 11.19. RoleMapping

Code
RoleMapping
Class
org.jboss.security.auth.spi.RoleMappingLoginModule
Description
Mappe un rôle qui est le résultat final du processus d'authentification de manière déclarative. Ce module doit être marqué comme étant optionnel quand vous y ajoutez le domaine de sécurité.

Tableau 11.20. Options de module RoleMapping

Option Type Par défaut Description
rolesProperties
Le chemin d'accès complet et le nom d'une ressource ou d'un fichier de propriétés
roles.properties
Nom de la ressource ou du fichier de propriétés qui mappe les rôles aux rôles de remplacement. Le format est original_role=role1,role2,role3
replaceRole
true ou false
false
Indique si on doit ajouter les rôles en cours, ou les remplacer par les rôles mappés. Sont remplacés si définis sur true.

Tableau 11.21. RunAs

Code
RunAs
Class
Class: org.jboss.security.auth.spi.RunAsLoginModule
Description
Un module d'assistance qui pousse un rôle run as dans la pile pour la durée de la phase d'authentification de la connexion, et qui extrait le rôle run as de la pile soit dans la phase commit ou abort. Ce module de connexion fournit un rôle pour les autres modules de connexion qui doivent accéder aux ressources sécurisées afin d'effectuer leur authentification, par exemple un module de connexion qui accède à un EJB sécurisé. RunAsLoginModule doit être configuré avant que les modules de connexion qui ont besoin d'une rôle run as soient mis en place.

Tableau 11.22. Options RunAs

Option Type Par défaut Description
roleName
Un nom de rôle.
nobody
Le nom de rôle à utiliser comme rôle run as pendant la phase de connexion.

Tableau 11.23. Simple

Code
Simple
Class
org.jboss.security.auth.spi.SimpleServerLoginModule
Description
Module d'installation rapide de sécurité pour les tests. Implémente ce simple algorithme :
  • Si le mot de passe est null, authentifie l'utilisateur et assigne une identité guest et un rôle guest.
  • Sinon, quand le mot de passe est égal à l'utilisateur, assigne une identité égale au nom d'utilisateur et aux deux rôles admin et guest.
  • Sinon, l'authentification échoue.
Simple Module Options

Le module Simple n'a pas d'options.

Tableau 11.24. ConfiguredIdentity

Code
ConfiguredIdentity
Class
org.picketbox.datasource.security.ConfiguredIdentityLoginModule
Description
Associe le principal spécifié dans les options du module avec n'importe quel sujet authentifié dans le module. Le type de classe du Principal classe est org.jboss.security.SimplePrincipal.

Tableau 11.25. ConfiguredIdentity Module Options

Option Type Par défaut Description
principal
Nom d'un principal.
guest
Le principal qui sera associé avec n'importe quel sujet authentifié dans le module.

Tableau 11.26. SecureIdentity

Code
SecureIdentity
Class
org.picketbox.datasource.security.SecureIdentityLoginModule
Description
Ce module est fourni à des fins d'héritage. Il permet de crypter un mot de passe et ensuite d'utiliser le mot de passe crypté avec un principal statique. Si votre application utilise SecureIdentity, envisager plutôt d'utiliser un mécanisme d'archivage sécurisé de mot de passe.

Tableau 11.27. Options de module SecureIdentity

Option Type Par défaut Description
username
chaîne aucun Le nom d'utilisateur pour l'authentification.
password
string encodé aucun
Le mot de passe à utiliser pour l'authentification. Pour crypter le mot de passe, utilisez le module directement dans la ligne de commande.
java org.picketbox.datasource.security.SecureIdentityLoginModule password_to_encrypt
Coller le résultat de cette commande dans le champ d'option de module.
managedConnectionFactoryName
Une ressource JCA aucun
Le nom de la fabrique de connexions JCA à utiliser pour votre source de données.

Tableau 11.28. PropertiesUsers

Code
PropertiesUsers
Class
org.jboss.security.auth.spi.PropertiesUsersLoginModule
Description
Utilise un fichier de propriétés pour stocker les noms d'utilisateur et mots de passe pour l'authentification. Aucune autorisation (correspondance de rôle) n'est fournie. Ce module convient seulement pour les tests.

Tableau 11.29. Options de module PropertiesUsers

Option Type Par défaut Description
properties
Le chemin d'accès complet et le nom d'une ressource ou d'un fichier de propriétés Java. aucun
Le fichier de propriétés contenant les noms d'utilisateur et mots de passe en texte clair à utiliser pour l'authentification.

Tableau 11.30. SimpleUsers

Code
SimpleUsers
Class
org.jboss.security.auth.spi.SimpleUsersLoginModule
Description
Ce module de connexion stocke le nom d'utilisateur et le mot de passe en texte clair dans un fichier de propriétés de Java. Il est inclus pour les essais uniquement et n'est pas approprié pour un environnement de production.

Tableau 11.31. Options de module SimpleUsers

Option Type Par défaut Description
username
chaîne aucun Le nom d'utilisateur pour l'authentification.
password
chaîne aucun Le nom d'utilisateur en texte clair pour l'authentification.

Tableau 11.32. LdapUsers

Code
LdapUsers
Class
org.jboss.security.auth.spi.LdapUsersLoginModule
Description
Le module LdapUsers est remplacé par les modules ExtendedLDAP et AdvancedLdap.

Tableau 11.33. Kerberos

Code
Kerberos
Class
com.sun.security.auth.module.Krb5LoginModule
Description
Effectue l'authentification de connexion Kerberos avec GSSAPI. Ce module fait partie de la structure de sécurité de l'API fourni par Sun Microsystems. Vous trouverez des informations à ce sujet dans http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html. Ce module devra être mis en correspondance avec un autre module qui gère les mappages d'authentification et de rôles.

Tableau 11.34. Options de module Kerberos

Option Type Par défaut Description
storekey
true ou false
false
Indique si on doit ajouter KerberosKey dans les informations d'authentification privées du sujet.
doNotPrompt
true ou false
false
Si défini à true, l'utilisateur n'aura pas besoin de mot de passe.
useTicketCache
Valeur booléenne de true ou false
.
false
Si défini à true, le GTG sera obtenu à partir du cache du ticket. Si défini sur false, le cache du ticket ne sera pas utilisé.
ticketcache
Un fichier ou une ressource qui représente un cache de ticket Kerberos.
La valeur par défaut dépend du système d'exploitation que vous utilisez.
  • Red Hat Enterprise Linux / Solaris: /tmp/krb5cc_uid, utilisant la valeur UID du système d'exploitation.
  • Microsoft Windows Server: utilise l'API LSA (Local Security Authority) pour trouver le ticketcache.
Emplacement du ticketcache.
useKeyTab
true ou false
false Indique si on doit obtenir la clé du principal à partir d'un keytab.
keytab
Un fichier ou une ressource représentant un onglet de clé Kerberos.
l'emplacement du fichier de configuration Kerberos du système d'exploitation, ou /home/user/krb5.keytab
Emplacement du fichier keytab.
principal
Une chaîne aucun
Le nom du principal. Cela peut être un simple nom d'utilisateur ou un nom de service tel que host/testserver.acme.com. Utiliser cela au lieu d'obtenir le principal d'un fichier keytab, ou lorsque le fichier keytab contient plus d'un principal.
useFirstPass
true ou false
false
Indique si on doit extraire le nom d'utilisateur et le mot de passe de l'état partagé du module à l'aide de javax.security.auth.login.name et de javax.security.auth.login.password comme clés. Si l'authentification échoue, il n'y aura pas de nouvelle tentative.
tryFirstPass
true ou false
false
Identique à useFirstPass, mais si l'authentification échoue, le module utilise le CallbackHandler pour récupérer un nouveau nom d'utilisateur et mot de passe. Si la seconde authentification échoue, l'échec sera signalé à l'application appelante.
storePass
true ou false
false
Indique si on doit stocker le nom d'utilisateur et le mot de passe de l'état partagé du module. N'a pas lieu si les clés existent déjà dans l'état partagé, ou si l'authentification a échoué.
clearPass
true ou false
false
Définir à true pour supprimer le nom de l'utilisateur et le mot de passe de l'état partagé une fois que les deux phases d'authentification sont terminées.

Tableau 11.35. SPNEGOUsers

Code
SPNEGOUsers
Class
org.jboss.security.negotiation.spnego.SPNEGOLoginModule
Description
Effectue l'authentification de connexion SPNEGO vers un serveur Microsoft Active Directory ou autre environnement qui supporte SPNEGO. SPNEGO peut également transporter les informations d'identification de Kerberos. Ce module a besoin de fonctionner en parallèle à un autre module qui gère l'authentification et le mappage des rôles.

Tableau 11.36. Options de module SPNEGO

Option Type Par défaut Description
storeKey
true ou false
false
Indique si on doit stocker la clé ou non.
useKeyTab
true ou false
false
Indique si on doit utiliser un keytab.
principal
String représentant un principal d'authentification.
aucun
Le nom du principal pour l'authentification.
keyTab
Un fichier ou une ressource représentant un keytab.
none
L'emplacement d'un keytab.
doNotPrompt
true ou false
false
Si on doit demander un mot de passe.
debug
true ou false
false
Indique si on doit enregistrer plus de messages verbeux pour pouvoir déboguer.

Tableau 11.37. AdvancedLdap

Code AdvancedLdap
Class
org.jboss.security.negotiation.AdvancedLdapLoginModule
Description
Module qui fournit davantage de fonctionnalité, comme SASL et l'utilisation d'un domaine de sécurité JAAS.

Tableau 11.38. Options de module AdvancedLdap

Option Type Par défaut Description
bindAuthentication
chaîne
aucun
Le type d'authentification SASL à utiliser pour se lier au serveur de répertoires.
jassSecurityDomain
string
aucun
Le nom du domaine de sécurité JAAS à utiliser.
java.naming.provider.url
string
aucun
L'URI du serveur de répertoires.
baseCtxDN
DN (Nom Distinctif) complet
aucun
Le nom distinctif à utiliser comme base pour les recherches.
baseFilter
Chaîne représentant un filtre de recherche LDAP
aucun
Le filtre à utiliser pour réduire les résultats des recherches.
roleAttributeID
Chaîne représentant un attribut LDAP
aucun
L'attribut LDAP qui contient les noms des rôles d'autorisation.
roleAttributeIsDN
true ou false
false
Indique si l'attribut de rôle est un Nom Distinctif (DN).
roleNameAttributeID
Chaîne représentant un attribut LDAP
aucun
L'attribut contenu dans RoleAttributeId qui contient lui-même l'attribut de rôle.
recurseRoles
true ou false
false
Indique si on doit chercher récursivement des rôles dans RoleAttributeId.

Tableau 11.39. AdvancedADLdap

Code AdvancedADLdap
Class
org.jboss.security.negotiation.AdvancedADLoginModule
Description
Ce module étend le module de connexion AdvancedLdap, et ajoute des paramètres supplémentaires utiles au répertoire Microsoft Active DIrectory.

Tableau 11.40. UsersRoles

Code UsersRoles
Class
org.jboss.security.auth.spi.UsersRolesLoginModul
Description
Un module de connexion supportant des utilisateurs multiples et des rôles utilisateur stockés dans deux fichiers de propriétés différents.

Tableau 11.41. Options de module UsersRoles

Option Type Par défaut Description
usersProperties
Chemin d'accès à un fichier ou à une ressource.
users.properties
Fichier ou ressource qui contient les mappages d'utilisateur aux mots de passe. Le format du fichier est user=hashed-password
rolesProperties
Chemin d'accès à un fichier ou à une ressource.
roles.properties
Fichier ou ressource qui contient les mappages d'utilisateur aux rôles. Le format du fichier est username=role1,role2,role3
password-stacking
useFirstPass ou false
false
La valeur de useFirstPass indique si ce module de connexion doit tout d'abord rechercher les informations stockées dans le LoginContext à utiliser comme identité. Cette option peut être utilisée lorsque vous empilez les autres modules de connexion avec celui-ci.
hashAlgorithm
Chaîne représentant un algorithme de hachage de mot de passe.
none
Le nom de l'algorithme java.security.MessageDigest à utiliser pour hacher le mot de passe. Il n'y a pas de valeur par défaut pour cette option, donc vous devez la définir explicitement pour permettre le hachage. Quand hashAlgorithm est spécifié, le mot de passe en texte clair obtenu de CallbackHandler isera haché avant d'être passé à UsernamePasswordLoginModule.validatePassword comme argument inputPassword. Le mot de passe stocké dans le fichier users.properties doit être haché de façon similaire.
hashEncoding
base64 ou hex
base64
Le format du string du mot de passe haché, si hashAlgorithm est défini également.
hashCharset
Une chaîne
Le codage par défaut défini dans l'environnement runtime du conteneur.
Le codage utilisé pour convertir le mot de passe de texte en clair en un tableau d'octets.
unauthenticatedIdentity
Un nom de principal
aucun
Définit le nom principal affecté aux demandes qui ne contiennent aucune information d'authentification. Cela peut permettre à des servlets non protégés d'appeler des méthodes sur EJB ne nécessitant pas un rôle spécifique. Un tel principal ne possédera aucun rôle associé et ne ne pourra accéder qu'aux méthodes EJB ou EJB non sécurisées associées à la contrainte de permission non contrôlée.
Modules d'authentification personnalisés

Les modules d'authentification sont des implémentations de org.jboss.security.LoginModule. Consulter la documentation de l'API pour obtenir plus d'informations sur la façon de créer un module d'authentification personnalisé.