Téléchargement des produits


Version anglaise


 


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

<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/*


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.


Changement du bloc ci-dessous en bloc de code

<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>



Changement de couleur du paragraphe suivant : rouge bizarre devient noir

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