Définition statique de la sécurité

La sécurité repose sur l'authentification des utilisateurs et sur les autorisations accordées pour chaque utilisateur.

Un royaume ("Realm") définit une "base de données" regroupant une liste de couples [profil, mot de passe] identifiant les utilisateurs valides d'une application web (ou d'un ensemble d'applications web). Le royaume définit également une liste des rôles qui peuvent être associés à chaque utilisateur.

Les autorisations d'accès aux ressources web sont délivrées au travers des rôles. Ainsi, l'utilisateur 'User' a accès à une ressource donnée s'il fait parti d'au moins un rôle possédant les droits sur cette ressource.

Un royaume peut revêtir différentes formes dans le sens où la "base de données" qu'il représente peut avoir différentes formes. Par exemple, la configuration de Tomcat offre 4 types de royaume :
- [MemoryRealm] Accès aux informations stockées dans un fichiers xml (par défaut: tomcat_users.xml Cf. Exemple ci-dessous)
- [DataSourceRealm] Accès aux informations stockées dans une datasource
- [JDBCRealm] Accès aux informations dans une base de données jdbc
- [JNDIRealm] Accès aux informations stockées dans un annuaire (via JNDI; ex LDAP etc.)


Exemple de définition du fichier tomcat_users.xml [MemoryRealm]:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="user"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="exiws1" password="changeIt" fullName="Prf user 1" roles="user"/>
<user username="exiws2" password="changeIt" fullName="Prf user 2" roles="user,admin"/>
<user username="exiws3" password="changeIt" fullName="Prf user 2" roles="manager,admin"/>
<user username="admin" password="changeIt" fullName="admin" roles="admin"/>
</tomcat-users>

Pour plus d'informations sur la gestion des royaumes dans Tomcat, se reporter à l'aide en ligne : %tomcat_home%/webapps/docs/realm-howto.html.

Nous vous préconisons de privilégier le mode Digested_Passwords pour l'encodage des mots de passe. https://tomcat.apache.org/tomcat-8.0-doc/realm-howto.html#Digested_Passwords

Exemple de définition d'un royaume dans le fichier de configuration conf/server.xml:

<Realm className="org.apache.catalina.realm.MemoryRealm" debug="0" />

 

La définition des contraintes de sécurité, c'est à dire la définition des accès aux ressources web, est portée par le tag <security-constraint> qui se trouve dans le fichier web.xml (fichier de description du déploiement de l'application web).
Exemple :

 

<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Resource </web-resource-name>
<url-pattern>/HTML/MaPage1.jsp</url-pattern>
<url-pattern>/HTML/MaPage2.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- Roles that have access -->
<role-name>admin</role-name>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>


Le principe est de définir une ou un ensemble de ressources (<web-resource-collection >) puis de désigner les rôles qui ont accès à ces ressources (<auth-constraint>).

Le fichier web.xml doit également définir les rôles utilisés dans les contraintes de sécurité à l'aide du tag <security-role>. Ces rôles pourront alors être mappés avec ceux définis par le serveur d'applications utilisé.

<!-- Define security roles -->
<security-role>
<description> admin role </description>
<role-name>admin</role-name>
</security-role>


Enfin le fichier web.xml doit définir le type d'authentification à utiliser. Ce type est défini à l'aide de la balise <login-config>. Le choix se porte sur une des 3 possibilités suivantes :

- BASIC [user:password] encodé en base64. Fenêtre d'authentification est celle du navigateur.
- DIGEST [user:password] encodé via un algo de cryptage. Fenêtre d'authentification est celle du navigateur.
- FORM [idem BASIC]. Permet de définir une page spécifique pour l'authentification, et une page spécifique pour afficher le message d'erreur si l'authentification échoue.

<!-- BASIC authentication -->
<login-config>
<auth-method>BASIC</auth-method>
</login-config>


Exemple de fichier web.xml gérant l'authentification:

web.xml

Définition des aspects dynamiques dans Adelia Web Studio

· Le mot réservé *USER du langage Adélia permet, dans un contexte web, de récupérer le nom de l'utilisateur authentifié pour la http session courante..
· La méthode 'VaToolBxAwsIsUserInRole' RoleName CodeRet permet de savoir si l'utilisateur authentifié pour la http session courante fait parti du rôle 'RoleName'.
· La méthode 'VaToolBxAwsGetAuthType' AuthType Res permet de récupérer le nom du protocole d'authentification utilisé.

  • Aucune étiquette