Chapitre 12. Référence à l'administration de la sécurité

12.1. Modules d'authentification inclus

Les modules d'authentification suivants sont inclus dans JBoss EAP 6. 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.

Modules d'authentification

Tableau 12.1. RealmDirect

Code
RealmDirect
Class
org.jboss.as.security.RealmDirectLoginModule
Description
Une implémentation du module de connexion en interface directe avec le domaine de la sécurité. Ce module de connexion permet à toutes les interactions avec le backing store d'être déléguées au domaine, supprimant ainsi la nécessité de définitions en duplicata ou synchronisées. Utilisé pour les appels d'accès distant et l'interface de gestion.

Tableau 12.2. Options du module RealmDirect

Option Type Par défaut Description
realm
chaîne
ApplicationRealm
Nom de domaine souhaité.

Tableau 12.3. 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 EAP agit en tant que client. Il ne doit jamais servir sous forme de domaine de sécurité pour l'authentification serveur.

Tableau 12.4. Options de module 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 celui-ci.
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 12.5. Remoting

Code
Remoting
Class
org.jboss.as.security.remoting.RemotingLoginModule
Description
Le module de connexion est utilisé pour vérifier si la demande actuellement authentifiée est une demande reçue via une connexion d'accès distant et, si c'est le cas, l'identité qui aura été créée pendant le processus d'authentification à accès distant sera utilisée et associée à la demande en cours. Si la demande n'est pas parvenue via une connexion d'accès distant, ce module ne fera rien et permettra à la connexion JAAS de continuer vers le module suivant.

Tableau 12.6. Options de Modules à accès distant

Option Type Par défaut Description
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.
principalClass
Un nom de classe complet.
aucun
Une classe d'implémentation de Principal contenant un constructeur qui prend les arguments du String comme nom de principal.
unauthenticatedIdentity
Un nom de principal.
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 pourra accéder qu'aux méthodes EJB ou EJB non sécurisées associées à la contrainte de unchecked permission.

Tableau 12.7. 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 12.8. 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 12.9. 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 12.10. Options de module CertificateRoles

Option Type Par défaut Description
rolesProperties
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 username=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
defaultRolesProperties
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 rolesProperties

Tableau 12.11. 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 12.12. Database Module Options

Option Type Par défaut Description
digestCallback
Un nom de classe complet
aucun
Le nom de classe de l'implémentation DigestCallback qui inclut le contenu pre/post digest comme les valeurs salt pour hacher le mot de passe donné. Utilisé uniquement si l'hashStoreAlgorithm est spécifié.
dsJndiName
Ressource JNDI
aucun
Le nom de la ressource JNDI qui store les informations d'authentification. Cette option est requise.
hashAlgorithm
String
Utiliser des mots de passe en texte brut
L'algorithme digest du message utilisé pour hâcher les mots de passe. Les algorithmes pris en charge dépendent du fournisseur de sécurité Java, mais MD5, SHA-1, et SHA-256 sont pris en charge.
hashCharset
String
Le codage par défaut de la plateforme
Le nom du charset (jeu de caractères)/codification à utiliser pour convertir la chaîne de mot de passe en tableau d'octets. Inclut tous les noms pris en charge par Java.
hashEncoding
String
Base64
Indique le format de code de chaîne à utiliser.
ignorePasswordCase
booléen
false
Signe qui indique si la comparaison de mot de passe doit ignorer le cas.
inputValidator
Un nom de classe complet
aucun
L'instance de l'implémentation de InputValidator utilisée pour valider le nom d'utilisateur et le mot de passe fournis par le client.
principalsQuery
énoncé SQL préparé
select Password from Principals where PrincipalID=?
La requête SQL préparée pour obtenir les informations sur le principal.
rolesQuery
énoncé SQL préparé
aucun
Enoncé SQL préparé en vue d'obtenir les informations concernant les rôles. Il 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 ou CallerPrincipal.
storeDigestCallback
Un nom de classe complet
aucun
Le nom de classe de l'implémentation DigestCallback qui inclut le contenu pre/post digest comme les valeurs salt pour hacher le mot de passe du store/attendu. Utilisé uniquement si hashStorePassword ou hashUserPassword est sur true et si hashAlgorithm est spécifié.
suspendResume
booléen
true
Indique si une transaction JTA existante doit être suspendue pendant les opérations de base de données.
throwValidatorError
booléen
false
Indique si les erreurs de validation soivent être exposées ou non aux clients
transactionManagerJndiName
Ressource JNDI
java:/TransactionManager
Le nom JNDI de la source du gestionnaire de transactions utilisé par le module de connexion.

Tableau 12.13. 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 12.14. Options de module DatabaseCertificate

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 préparé
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 ou CallerPrincipal.
suspendResume
true ou false
true
Indique si une transaction JTA existante doit être suspendue pendant les opérations de base de données.

Tableau 12.15. 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 12.16. Options de module Identity

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

Tableau 12.17. 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 12.18. 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
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
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
chaîne
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 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 recherche des rôles d'utilisateur. Cela diffère de rolesCtxDN car le contexte de recherche de rôles d'utilisateur peut être unique pour chaque utilisateur.
roleAttributeID
attribut
roles
Nom de l'attribut qui contient les rôles d'utilisateur.
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.
roleNameAttributeID
attribut
name
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.
allownEmptyPasswords
true ou false
false
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 12.19. 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 les 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 12.20. 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.
bindCredential
string, parfois crypté
aucun
Consulter le JBoss EAP Security Guide pour obtenir plus d'informations.
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.
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
aucun
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}). Une alternative correspondant au userDN authentifié serait (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 contient le roleNameATtributeID. Si la valeur est false, le DN ne contient pas 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. Cette option peut à la fois être utilisée pour usernameBeginString et usernameEndString.
usernameBeginString
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
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
name
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 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
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
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.
allownEmptyPasswords
true ou false
false
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.
referralUserAttributeIDToCheck
attribut
aucun
Si vous n'utilisez pas de renvois, cette option peut être ignorée. Lorsque vous utilisez des références, cette option indique le nom d'attribut qui contient les utilisateurs définis pour un certain rôle (par exemple, member), si l'objet rôle est à l'intérieur du référentiel. Les utilisateurs sont vérifiés par le contenu de cet attribut de nom. Si cette option n'est pas définie, le contrôle échouera à chaque fois, alors les objets role ne peuvent pas être stockés dans un arbre de référence.

Tableau 12.21. 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 12.22. 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
none
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.

Note

L'option de module rolesProperties est requise pour le RoleMapping.

Tableau 12.23. RunAs

Code
RunAs
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'un rôle run as soient mis en place.

Tableau 12.24. Options RunAs

Option Type Par défaut Description
roleName
nom de rôle
nobody
Le nom de rôle à utiliser comme rôle run as pendant la phase de connexion.
principalName
nom de principal
nobody
Le nom de principal à utiliser comme principal run as pendant la phase de connexion. S'il n'est pas spécifié, on utilisera la valeur par défaut nobody.
principalClass
Un nom de classe complet.
aucun
Une classe d'implémentation de Principal contenant un constructeur qui prend les arguments du String comme nom de principal.

Tableau 12.25. 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.
Options de module Simple

Le module Simple n'a pas d'options.

Tableau 12.26. 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 12.27. Options de module ConfiguredIdentity

Option Type Par défaut Description
username
chaîne aucun Le nom d'utilisateur pour l'authentification.
password
string encodé ""
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. La valeur par défaut correspond à une chaîne vide.
principal
Nom d'un principal
none
Le principal qui sera associé avec n'importe quel sujet authentifié dans le module.

Tableau 12.28. 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 12.29. Options de module SecureIdentity

Option Type Par défaut Description
username
chaîne aucun Le nom d'utilisateur pour l'authentification.
password
string encodé ""
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. La valeur par défaut correspond à une chaîne vide.
managedConnectionFactoryName
Ressource JCA aucun
Le nom de la fabrique de connexions JCA à utiliser pour votre source de données.

Tableau 12.30. 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 les mots de passe pour l'authentification. Aucune autorisation (correspondance de rôle) n'est fournie. Ce module convient seulement pour les tests.

Tableau 12.31. 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 avec module-option. le name de module-option et les attributs de value se réfèrent à un nom d'utlisateur et à un mot de passe. Il est inclus pour les essais uniquement et n'est pas approprié pour un environnement de production.

Tableau 12.32. LdapUsers

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

Tableau 12.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/7/docs/jre/api/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 12.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 sur 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 TGT 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
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 12.35. SPNEGO

Code
SPNEGO
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 12.36. Options de module SPNEGO

Option Type Par défaut Description
serverSecurityDomain
string
null.
Définit le domaine utilisé pour extraire l'identité du service de serveur par le biais du module de connexion kerberos. Cette propriété doit être définie.
removeRealmFromPrincipal
boolean
false
Indique si le domaine Kerberos doit être retiré du principal avant de continuer.
usernamePasswordDomain
string
null
Indique un autre domaine de sécurité de la configuration qui doit être utilisée comme journalisation d'échec quand Kerberos échoue.

Tableau 12.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 12.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.
java.naming.provider.url
string
aucun
L'URI du serveur de répertoires.
baseCtxDN
DN 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
Valeur de 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.
referralUserAttributeIDToCheck
attribut
aucun
Si vous n'utilisez pas de renvois, cette option peut être ignorée. Lorsque vous utilisez des références, cette option indique le nom d'attribut qui contient les utilisateurs définis pour un certain rôle (par exemple, member), si l'objet rôle est à l'intérieur du référentiel. Les utilisateurs sont vérifiés par le contenu de cet attribut de nom. Si cette option n'est pas définie, le contrôle échouera à chaque fois, alors les objets role ne peuvent pas être stockés dans un arbre de référence.

Tableau 12.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 12.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 12.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 username=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 sera 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
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
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 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 javax.security.auth.spi.LoginModule. Reportez-vous à la documentation de l'API pour plus d'informations sur la création d'un module d'authentification personnalisé.