A. RSJwtAuthenticationFilter (Cf. JWT - Configuration externe pour validation d'un jeton émis par un tiers.)

Configuration des propriétés (jose) suivantes via l'élément <jwtTokenConfiguration> du fichier "beans.xml"

Nom clé JOSENom élément <jwtTokenConfiguration>Défaut
rs.security.keystore.filejwtSecKeyFileName (2)"url/adelRSJwtSecurity"
rs.security.keystore.typejwtSecKeyStoreType"jks"
rs.security.keystore.aliasjwtSecKeyStoreAlias"jwtProviderKey"
rs.security.keystore.passwordjwtSecKeyStorePwd-
rs.security.signature.algorithmjwtSecKeySignAlg(3)RS256

 (1) cette propriété n'est configurable qu'à partir de la version 14 d'Adélia Studio
 (2) cette propriété n'est configurable qu'à partir de la version 14.1.1 d'Adélia Studio
(3) cette propriété n'est configurable qu'à partir de la version 14.6.0 d'Adélia Studio
. Permet d'imposer un algorithme de chiffrement pour valider la signature. Valeurs possibles : RS256 | RS384 | RS512
La propriété jwtSecKeyFileName (→ CXF/JOSE : rs.security.keystore.file) prend par défaut la valeur (ressource JNDI) "url/adelRSJwtSecurity".
Si cette ressource JNDI n'est pas trouvée, le fichier /WEB-INF/Conf/RSJwtSecurity.key est utilisé.
Si jwtSecKeyFileName  ne commence pas par "url/" il doit indiquer un nom de fichier présent dans /WEB-INF/conf.


B. JwtProvider

Configuration des propriétés (jose) suivantes via l'élément <jwtProviderConfig> du fichier "beans.xml"

Nom clé JOSENom élément <jwtProviderConfig>Défaut
rs.security.keystore.filejwtSecKeyFileName (2)"url/adelRSJwtSecurity"
rs.security.keystore.typejwtSecKeyStoreType "jks"
rs.security.signature.algorithmjwtSecKeySignAlg (1)"RS256"
rs.security.keystore.aliasjwtSecKeyStoreAlias"jwtProviderKey"
rs.security.keystore.passwordjwtSecKeyStorePwd-
rs.security.key.password

jwtSecKeySecret(3)

-

 (1) cette propriété n'est configurable qu'à partir de la version 14 d'Adélia Studio
Les valeurs possibles pour la propriété jwtSecKeySignAlg sont : RS256 | RS384 | RS512

 (2) cette propriété n'est configurable qu'à partir de la version 14.1.1 d'Adélia Studio
La propriété jwtSecKeyFileName (→ CXF/JOSE : rs.security.keystore.file) prend par défaut la valeur (ressource JNDI) "url/adelRSJwtSecurity".
Si cette ressource JNDI n'est pas trouvée, le fichier /WEB-INF/Conf/RSJwtSecurity.key est utilisé.

Si jwtSecKeyFileName  ne commence pas par "url/" il doit indiquer un nom de fichier présent dans /WEB-INF/conf.

(3) La valeur de cette clé peut-être chiffrée à l'aide du l'outil jwtKeyTool. La valeur chiffrée est alors renseignée sous la forme : {RSA}ValeurChiffrée
Exemple :
java -cp jwtProvider-{version}.jar;bcprov-jdk15on-{version}.jar com.hardis.jwtprovider.JwtKeyTool -encode -keyfile c:\keys\RsJwtSecurity.key "StringToEncode"

WdlJ8dzGFrX3QLQNQSY38wt/edmtD0dPNcuOm58tfIwd75aFRtHLKtEHcgUCe2vp1xh4FW2G62EKS/yPZ2u/ooQkQrriRjz/io6TMa8eJFsEFYp30tH2C7UcdAYMPanc0uz4XI1IObXeNERhaeL07KYAfoaePlHwLDLd3NX4cvDO39y1dpuYueLaU7u+mv5XZMPr2VtXe/9EuBGJNkofFe6gu0XinoC8/VBM/MQ3lrzsKCG4im+9aOD1Ghl+ua/6MG0gONyoHPkko4IffLZGpXqKj3oP5xWV+ukIu+RX0UNJ/9xqjqjW3WacrnAa3r5yVboLJZSmvI6e5n5RcaO2yg==


<property name="jwtSecKeySecret"      value="{RSA}WdlJ8dzGFrX3QLQNQSY38wt/edmtD0dPNcuOm58tfIwd75aFRtHLKtEHcgUCe2vp1xh4FW2G62EKS/yPZ2u/ooQkQrriRjz/io6TMa8eJFsEFYp30tH2C7UcdAYMPanc0uz4XI1IObXeNERhaeL07KYAfoaePlHwLDLd3NX4cvDO39y1dpuYueLaU7u+mv5XZMPr2VtXe/9EuBGJNkofFe6gu0XinoC8/VBM/MQ3lrzsKCG4im+9aOD1Ghl+ua/6MG0gONyoHPkko4IffLZGpXqKj3oP5xWV+ukIu+RX0UNJ/9xqjqjW3WacrnAa3r5yVboLJZSmvI6e5n5RcaO2yg=="/>


Adelia V14 PTF01
Possibilité d'utiliser un keystore autre que le keystore par défaut (sans quoi modifier les valeurs présentées ci-dessus n'a pas d'intérêt).


Restrictions actuelles : 
.Type de keystore : JKS
.keyalg:RSA, keysize:2048

Création d'un keystore JKS (avec génération d'une paire de clés : clé privée, clé publique)  [https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html#keytool_option_genkeypair]:

>   keytool -genkeypair -alias <storeAlias> -keyalg RSA -keysize 2048 -storetype JKS -keystore <keystorename> -storepass <storepass> -keypass <keypass>


Par la suite le keystore <keystorename> peut être utilisé pour la délivrance de jetons en injectant les données dans le fichier beans.xml :
 <bean id="jwtProviderConfig" class="com.hardis.jwtprovider.JwtProviderConfig">
   <property name="jwtSecKeyStoreAlias"    value="<storeAlias/>
   <property name="jwtSecKeySecret"        value="<keyPass>"/>
   <property name="jwtSecKeyStorePwd"      value="<storePass>"/>  
     ...
</bean>

et en définissant une ressource JNDI (server.xml) pour accéder au keystore <keystoreName>.

<Context...
   <Resource auth="Container" factory="com.hardis.common.JndiURLFactory" name="url/adelRSJwtSecurity" type="java.net.URL" url="file:///.../<keystorename>"/>
</Context> 


Avec Adélia V14.1.1 il est possible de fixer la propriété jwtSecKeyFileName pour utiliser une autre ressource JNDI ou un autre fichier placé dans le répertorie /WEB-INF/Conf

  • Aucune étiquette