.. _exploitihmdemo: Configuration de apache shiro ############################### Présentation authentification via LDAP et via certificat ========================================================= Afin de pouvoir authentifier des clients via une base de données LDAP il suffit de bien configurer shiro. Pour ce faire, Vitam utilise le fichier shiro.ini qui a la forme suivante. .. code-block:: ini [main] contextFactory = org.apache.shiro.realm.ldap.JndiLdapContextFactory contextFactory.url = ldap://localhost:389 contextFactory.systemUsername = cn=admin,dc=example,dc=org contextFactory.systemPassword = password realm = fr.gouv.vitam.common.security.rest.LdapRealm realm.ldapContextFactory = $contextFactory realm.searchBase = "dc=example,dc=org" realm.groupRequestFilter = (&(objectClass=groupOfNames)(member={0})) realm.userDnTemplate = uid={0},dc=example,dc=org realm.groupRolesMap = "cn=gadmins,dc=example,dc=org":"admin", "cn=gusers,dc=example,dc=org":"user", "cn=gadmins,dc=example,dc=org":"guest" securityManager.realms = $realm .. code-block:: ini x509 = fr.gouv.vitam.common.auth.web.filter.X509AuthenticationFilter x509.useHeader = false x509credentialsMatcher = fr.gouv.vitam.common.auth.core.authc.X509CredentialsSha256Matcher x509Realm = fr.gouv.vitam.common.auth.core.realm.X509KeystoreFileWithRoleRealm x509Realm.grantedKeyStoreName = /vitam/conf/ihm-demo/grantedstore_ihm-demo.jks x509Realm.grantedKeyStorePassphrase = azerty12 x509Realm.trustedKeyStoreName = /vitam/conf/ihm-demo/truststore_ihm-demo.jks x509Realm.trustedKeyStorePassphrase = azerty10 x509Realm.credentialsMatcher = $x509credentialsMatcher x509Realm.certificateDnRoleMapping = "CN=userAdmin,O=Vitam,L=Paris":"admin", "CN=userUser,O=Vitam,L=Paris,C=FR":"user" securityManager.realms = $x509Realm Décryptage de ``shiro.ini`` ============================= ``[main]`` Contient la déclaration des options et mappings dans l'authentication ldap: - contextFactory.url : url du serveur ldap ; - contextFactory.systemUsername : identifiant de l'utilisateur ; - contextFactory.systemPassword : mot de passe ; - realm.searchBase : le domaine de recherche dans LDAP ; - realm.groupRequestFilter : chaque utilisateur est déclaré dans un groupe, cette requête sert à chercher les groupes de l'utilisateur ; - realm.userDnTemplate : le modèle pour traduire un identifiant de l'utilisateur en DN (distinguished name) dans ldap ; - realm.groupRolesMap : le mapping entre le DN des group de l'utilisateur et les rôles dans ihm ; - x509Realm.grantedKeyStoreName : le fichier grantedstore ; - x509Realm.trustedKeyStoreName : le fichier trustedstore ; - x509Realm.certificateDnRoleMapping : le mapping entre le DisplayName de certificat et les rôles dans ihm. Note: on peut déclarer plusieurs groups qui ont la même rôle admin avec cette syntaxe : .. code-block:: ini "groupeA" : "admin", "groupeB" : "admin", "groupeC" : "admin"