Téléchargement des produits


Version anglaise


 

Lorsque l'utilisateur a été authentifié avec succès par le (ou les) modules d'authentification, le service doit créer un jeton JWT et le retourner à l'émetteur de la requête.

 

Le jeton intègre, via des attributs nommés claims, différentes informations.

Certaines sont issues du module d'authentification :

Nom du claim

Commentaire

sub (subject)

Contient le nom de l'utilisateur authentifié.

claimName

Le module d'authentification LDAP permet d'associer une valeur d'attribut de l'utilisateur authentifié à un nom de claim [claimName].

 

 

Le jeton intègre également des informations définies par l'objet JwtProviderConfig décrit dans le fichier de configuration /WEB-INF/beans.xml.

<bean id="jwtProviderConfig" class="com.hardis.jwtprovider.JwtProviderConfig">
     <property name="jwtUserRoleClaim"       value="roles"/>
      <!-- iat | nbf | exp -->      
      <property name="jwtValidityTimeClaim"  value="iat"/>
      <!--property name="jwtTtl"             value="3600"/-->      
      <property name="jwtIssuer"             value="jwtProvider/hardis-group.com"/>
      <property name="jwtPrefixId"           value="TokenId_"/>
      <property name="jwtAudienceKind"       value="RscServers "/>
      <property name="jwtAudience"           value="http://hardis-group.com/apis;http://hardis.fr/apis"/>
      <property name="jwtLoginModuleName"    value="jwtLDAPLoginModule"/>
      ...
<bean>

Nom du claim

JwtProviderConfig (propriétés)

iat : issued at

exp : expiration time

nbf : not before

La propriété jwtValidityTimeClaim permet de fixer le claim prédéfini à utiliser pour gérer la validité temporelle du jeton.

Par défaut : "iat".

 

La propriété jwtTtl (en s ; par défaut : 3600) permet de calculer la valeur des claims exp ou nbf à partir de l'heure courante.

Ainsi pour le claim :

exp : le jeton expirera à partir de : heure courante + jwtTtl

nbf : le jeton deviendra valide à partir de : heure courante + jwtTtl

iss (issuer)

La propriété jwtIssuer permet de renseigner l'émetteur du jeton.

Par défaut : "jwtProvider/hardis-group.com"

jti (JWT id)

Identifiant du jeton.

La propriété jwtPrefixId permet de définir un préfixe pour l'identifiant du jeton.

L'ID complet est construit en concaténant ce préfixe avec le temps Unix courant.

Par défaut : "TokenId_"

aud (audience)

La propriété jwtAudienceKind permet de définir le type d'audience à contrôler. Les valeurs possibles sont :

  • None : pas d'audience.
  • RscServers : seveurs de ressources.
  • IPHost : Client accédant au serveur de ressources identique à celui ayant émis la requête de demande de jeton.

Pour une audience de type 'RscServers', la propriété jwtAudience permet - via des préfixes d'URL - de renseigner les serveurs de ressources destinataires du jeton.

roles

La propriété jwtUserRoleClaim permet de définir le nom du claim à utiliser pour stocker les rôles de l'utilisateur authentifié.

Par défaut : "roles".

 

 

Pour terminer la création du jeton, celui-ci est signé numériquement à l'aide d'une clé de chiffrement.

Cette même clé est utilisée par le serveur de ressources pour valider la signature du jeton.

Le jeton JWT retourné par le service est représenté sous la forme d'une chaîne constituée de 3 parties : "A.B.C".

Le '.' est le caractère séparant chacune des parties, chaque partie étant encodée en base64.

 

Exemple de jeton JWT :

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9 .eyJzdWIiOiJTVmlnbmVsbG8iLCJpc3MiOiJhdX

RoLmhhcmRpcy5jb20iLCJpYXQiOjE0NjU1NzI2MTksImF1ZCI6Imh0dHA6Ly9oYXJkaXMtZ3Jvd

XAuY29tIiwianRpIjoiVG9rZW5JZF8xNDY1NTcyNjIxIiwicm9sZXMiOlsidXNlciJdLCJzcGVj

Q2xhaW0xIjoiU2VyZ2UuVmlnbmVsbG9AaGFyZGlzLmZyIiwic3BlY0NsYWltMiI6IlNWaWduZWx

sbyJ9. SDmrfjIsnv04_SqxoQDCsvc5yclPSLF2FXkTmjj6klSCzPOb5ADpKTavFzh902Usf

-

9k0mhbW6zT4NeIQB3cxRKpL0iDT85eJwPucvycMzmQ2Fs4N6yxdJYJl0JQzMKTcnCVzdKGh

-

6V5FP25nfZaFyyMlBGCLj9ynudJSdgIw1MjnpZKEpek6Nk4Fgj0OrO1RIL1ULYVkYtwnFDPZbLL

PqQ7ulTRwLeUEEn5ZaDnfTXp8M0LM22SZOS_VRzH_WgEAnlv_GlaWRXq4ijFTm8TRpNu4cURB0A

dYZuBbTiR_a4K1b5X430WUr0CdfhLiYM

-eY2VsG7Ie0Jis1ZxuT6XA

 

La première partie (en vert) est l'en-tête du jeton. Il contient les claims prédéfinis typ et alg. Ceux-ci ont respectivement les valeurs 'JWT' et 'HS256' (algorithme de chiffrement).

Ainsi l'en-tête JSON { "typ": "JWT", "alg": "RS256"} encodé en base64 donne la partie A du jeton : eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.

La seconde partie (en bleu) est le corps du jeton. Il contient les claims prédéfinis (sub, iss, iat ou exp ou nbf, jti, aud) et des claims privés additionnels (roles, ...).

 

La troisième et dernière partie (en orange) est la signature numérique du jeton calculée à partir la première et deuxième parties, toutes deux encodées en base64, de l'algorithme et de la clé de chiffrement.

 

La fonction de la VaToolBx nommée VaToolBxAwsGetJWTClaim permet, dans un programme Visual Adélia Batch (service REST), de récupérer la valeur associée à un nom de claim du jeton JWT utilisé pour authentifier l'utilisateur.

↑ Haut de page

  • Aucune étiquette