Téléchargement des produits


Version anglaise


 

La mise en œuvre de la gestion des autorisations en sus d'une authentification par jeton repose sur la déclaration d'une référence à un objet de type JwtSecurityConfiguration dans l'élément <jaxrs:server> du fichier beans.xml :

<jaxrs:server ...>
   <jaxrs:properties>
      <entry key="jwtTokenConfiguration">
         <ref bean="jwtTokenConfiguration"/>
      </entry>
      <entry key="jwtSecurityConfiguration">           
            <ref bean="jwtSecurityConfiguration"/>
      </entry>
   </jaxrs:properties>
</jaxrs:server>

 

 

L'objet JwtSecurityConfiguration expose une liste de rôles (jwtSecurityRoles) et un ensemble de contraintes de sécurité (jwtSecurityConstraints).


 

<bean id="jwtSecurityConfiguration" class="com.hardis.adelia.webservice.JwtSecurityConfiguration">
      <property name="jwtSecurityRoles">
         <list>
            <value>admin</value>
            <value>customer</value>
            <value>supplier</value>
         </list>
      </property>
      <property name="jwtSecurityConstraints">
         <list>
            <ref bean="jwtSecurityConstraint_1" />
            <ref bean="jwtSecurityConstraint_2" />
         </list>
      </property>
</bean>


 

 

 

Une contrainte de sécurité (JwtSecurityConstraint) cible un ensemble de ressources (à travers les propriétés url_patterns et http_methods) et leur assigne des autorisations via une liste de rôles (role_names) :

 

url_patterns

Une ou plusieurs url-pattern.

Seul le caractère joker * est accepté dans l'url-pattern et uniquement en fin d'URL. Exemple : /a/b/c/*

 

Exemple : /a/b/c/*

 

http_methods

Une liste d'ordres HTTP (GET/PUT/POST/DELETE...).

La propriété est facultative ; son absence indique que la contrainte porte sur tous les ordres HTTP.

 

role_names

Une liste de rôles autorisés.

Les rôles doivent appartenir à la liste des rôles déclarés via l'objet JwtSecurityConfiguration.

 

 

La propriété est facultative, son absence indique que la ressource n'est jamais accessible.

 

<bean id="jwtSecurityConstraint_1" class="com.hardis.adelia.webservice.JwtSecurityConstraint">
      <property name="url_patterns">
         <list>
            <value>/ws/jaxrc1/*</value>
            <value>/ws/jaxrc2/*</value>
            <value>/ws/jaxrc3/*</value>
         </list>
      </property>
     
      <!-- no method == all methods -->
      <property name="http_methods">
         <list>
            <value>PUT</value>
            <value>POST</value>
            <value>DELETE</value>
         </list>
      </property>


     <!-- no role_names == access is forbidden -->
      <property name="role_names">
         <list>
            <value>admin</value>
         </list>
      </property>
</bean>

<bean id="jwtSecurityConstraint_2" class="com.hardis.adelia.webservice.JwtSecurityConstraint">
      <property name="url_patterns">
         <list>
            <value>/ws/jaxrc1/voit2/*</value>
         </list>
      </property>

      <property name="role_names">
         <list>
            <value>customer</value>
            <value>supplier</value>
         </list>
      </property>
   </bean>

 

 

L'exemple ci-dessus déclare deux contraintes de sécurité nommées :

 

jwtSecurityConstraint_1 : contrainte imposant à l'utilisateur d'avoir le rôle admin pour toutes les requêtes PUT, POST et DELETE dont l'URL commence par l'un des trois segments suivants :

 /<ContextPath>/ws/jaxrc1/

 /<ContextPath>/ws/jaxrc2/

 /<ContextPath>/ws/jaxrc3/

jwtSecurityConstraint_2 : contrainte imposant à l'utilisateur d'avoir soit le rôle customer, soit le rôle supplier, pour toutes les requêtes dont l'URL commence par :

/<ContextPath>/ws/jaxrc1/voit2/

 

 

Remarque : dans le cas où une ressource satisfait plusieurs contraintes de sécurité, les règles de désignation de la bonne contrainte suivent le schéma suivant :

[1] Concordance parfaite

[2] Précédence d'une concordance avec préfixe d'une concordance avec un préfixe plus court.

[3] Précédence d'une concordance avec préfixe d'une concordance universelle.

[4] Concordance universelle (url_pattern : /)

 

 

 

 

 

↑ Haut de page

  • Aucune étiquette