(V13 PTF9)

A partir de la version Adélia V13 PTF09, le service JwtProvider permet de délivrer un jeton avec des informations pour le claim "aud" (audience).
Le claim "aud" peut-être utilisé de 2 façons différentes.

1. Jeton à destination de serveurs de ressource spécifiques. 
 

a. JwtProvider

Le claim "aud" contient une liste de préfixes d'URL permettant de contrôler que le jeton est utilisé par un serveur de ressources connu.

Exemple :

Exemple audience
<bean id="jwtProviderConfig" class="com.hardis.jwtprovider.JwtProviderConfig">
      <property name="jwtUserRoleClaim"      value="roles"/>
	  <.../>
      <property name="jwtAudienceKind"       value="RscServers"/> <!-- None | RscServers | IPHost -->      
      <property name="jwtAudience"           value="http://server1/ws; https://sserv.org/ws"/> <!-- Resource Servers list if jwtAudienceKind is set to RcsServers -->      
      <.../>      
   </bean>

Le bean jwtProviderConfig déclare :

  • la propriété jwtAudienceKind avec la valeur RscServers
  • la propriété jwtAudience avec la liste des préfixe d'URL des serveurs de ressources à adresser. 
     

b. Configuration du serveur de ressources.

Pour effectuer le contrôle de validité du jeton sur le claim "aud", il faut ajouter au bean jwtTokenConfiguration :

  • la propriété jwtValidateAudience avec la valeur true.
  • la propriété jwtAudienceKind avec la valeur "RscServers".   

    Exemple :

    Exemple audience
    <bean id="jwtTokenConfiguration" class="com.hardis.adelia.webservice.JwtTokenConfiguration">
          <property name="jwtAuthScheme" value="JWT"/>      <property name="jwtUserRoleClaim"      value="roles"/>
    	  <.../>
    	  <property name="jwtValidateAudience"   value="true" />
          <property name="jwtAudienceKind"   value="RcsServers" />
          <.../>      
       </bean>


2. Jeton à destination d'un client unique / client ayant fait la demande du jeton.

a. JwtProvider

Le claim "aud" contient l'@ IP du client ayant émis la requête de demande de jeton. Avec ce dernier, seul ce client pourra adresser une requête au serveur de ressources configuré de façon ad hoc.

 Exemple :

Exemple audience
<bean id="jwtProviderConfig" class="com.hardis.jwtprovider.JwtProviderConfig">
      <property name="jwtUserRoleClaim"      value="roles"/>
      <.../>
      <property name="jwtAudienceKind"       value="IPHost"/> <!-- None | RscServers | IPHost -->      
      <.../>      
   </bean>

b. Configuration du serveur de ressources.

Pour effectuer le contrôle de validité du jeton sur le claim "aud", il faut ajouter au bean jwtTokenConfiguration :

  • la propriété jwtValidateAudience avec la valeur true.
  • la propriété jwtAudienceKind avec la valeur "IPHost".   

    Exemple :

    Exemple audience
    <bean id="jwtTokenConfiguration" class="com.hardis.adelia.webservice.JwtTokenConfiguration">
          <property name="jwtAuthScheme" value="JWT"/>      <property name="jwtUserRoleClaim"      value="roles"/>
    	  <.../>
    	  <property name="jwtValidateAudience"   value="true" />
          <property name="jwtAudienceKind"   value="IPHost" />
          <.../>      
       </bean>


 

3. Api RSJwtAuthenticationFilter.validateSSOToken

Une nouvelle signature a été créée pour cette Api afin de prendre en compte la validation du claim "aud".
Ancienne API :
public static final boolean validateSSOToken(String wrappedJwt, int timeToLive, URL SecretKeyPath)

Nouvelle API:

public static final boolean validateSSOToken(String wrappedJwt, int timeToLive, String audienceKind, HttpServletRequest webRequest, URL SecretKeyPath)
Le paramètre audienceKind peut prendre les valeurs suivantes :

  • "None"
  • "RscServers"
  • "IPHost"

Dans le cas du "IPHost", il est nécessaire de passer l'instance de la HttpServletRequest (webRequest) comme avant dernier paramètre de la méthode.


  • Aucune étiquette