Téléchargement des produits


Version anglaise


 

La révocation de jetons JWT par le serveur de ressources est un élément supplémentaire de sécurisation.
Un jeton dont l'utilité est devenue caduque, alors que sa durée de validité n'est pas révolue, doit être révoqué. Ainsi, il ne peut pas être utilisé pour s'authentifier malicieusement auprès d'un service.
L'opération de révocation est réalisée par le biais d'une requête explicite à une webapi dédiée.


Configuration de la gestion de révocation

La gestion de la révocation n'est pas active par défaut. Pour la rendre opérationnelle, il faut déclarer - dans le fichier Beans.xml - un bean de type JwtRevokeConfiguration.


jwtRevokeConfiguration
<bean id="jwtTokensRevocation" class="com.hardis.adelia.webservice.JwtRevokeConfiguration" init-method="loadTokensMap" destroy-method="saveTokensMap" />
      
ou 

<bean id="jwtTokensRevocation" class="com.hardis.adelia.webservice.JwtRevokeConfiguration" init-method="loadTokensMap" destroy-method="saveTokensMap">
      <property name="jwtClaimId"               value="???"/> <!-- default value: jti -->
      <property name="jwtPurgeFrequencyTime"    value="???"/> <!-- default value: 3600 -->        
</bean>



  • jwtClaimId : Nom du claim identifiant le jeton JWT. Valeur par défaut : "jti". Cette information est utile uniquement dans le cas où l'on souhaite savoir si un jeton, identifié par son id, a été révoqué.
  • jwtPurgeFrequencyTime : Fréquence de purge, en secondes, de la table des jetons révoqués. Valeur par défaut : 3600. A adapter en fonction de la durée de la validité des jetons.


Qui a le droit de révoquer un jeton ?

Le jeton peut être révoqué uniquement par une requête authentifiée par ce même jeton.


Persistance de la table des jetons révoqués

La table des jetons révoqués subsiste après un redémarrage du serveur de ressources.


Purge de la table des jetons révoqués

La table des jetons révoqués est purgée à une fréquence donnée (par défaut, toutes les heures. Cf. jwtPurgeFrequencyTime). Les jetons révoqués purgés sont les jetons révoqués arrivés à expiration.


Webapis

Objectif
Point d'accès de l'API
Verbe HTTP
Réponse
Statut 

Révocation


/<ContextPath>/<CXF_url-pattern>/tokens/revocation

@DELETE 

Media-type : text/plain
Valeurs : true | false 

200 
401
404 

Est-ce que le jeton jwtId est révoqué ?


/<ContextPath>/<CXF_url-pattern>/tokens/revocation/{jwtId}


@GET 

Media-type : text/plain
Valeurs : true | false


200
401
404

Liste des jetons révoqués

/<ContextPath>/<CXF_url-pattern>/tokens/revocation/list


@GET 

Media-type : application/json

[ { "jwtId": "TokenId__FE706DC72E90060E9E88FB887ACB72E1_25_1619685311434", "revokedBy": "userName", "revocationRequestDate": "2021-04-29T08:35Z", "expirationDate": 1619688911 }, { "jwtId": "TokenId__FE706DC72E90060E9E88FB887ACB72E1_28_1619685265807", "revokedBy": "userName", "revocationRequestDate": "2021-04-29T08:35Z", "expirationDate": 1619688865 } ]

200
401
404



HTTP Code :  

  • Si l'opération aboutit : HTTP Code = 200

  • Si l'opération échoue car la requête de révocation n'est pas autorisée : HTTP Code = 401

  • Si le bean JwtRevokeConfiguration n'est pas déclaré (= révocation non active) ou si le jeton interrogé n'est pas trouvé : HTTP Code = 404.


Exemple de révocation d'un jeton - Code Adélia
EXECUTER_HTTP *URL('http://monsite/mawebapp/ws/tokens/revocation') *OPTIONS('--request DELETE --header Accept: text/plain --header Authorization:JWT <jwt_token>') *REPONSE(VarRetCode) *CODE_HTTP(VarHttpCode)
Remarque : "<jwt_token>" correspond à la valeur du jeton

↑ Haut de page


  • Aucune étiquette