Configuration de l'authentification JWT
Utilisez les informations suivantes pour configurer l'authentification JWT en fonction de vos besoins métier. Vous pouvez configurer l'authentification JWT pour différents noeuds finaux. Par exemple, les API REST.
Avant de commencer
- Nom de l'émetteur qui génère et signe le jeton Web JSON avec la clé privée. Le nom de l'émetteur peut être nécessaire pour certaines configurations.
- Clé publique correspondant à la clé privée utilisée pour signer le jeton Web JSON (JWT). Cette clé publique est utilisée pour vérifier la signature du jeton Web JSON (JWT).
- Données présentes dans le jeton Web JSON (JWT) et zone pouvant être utilisée pour le mappage à un utilisateur OMS.
Procédure
- Activez l'authentification JWT pour le noeud final approprié.Si le noeud final est une API REST, activez l'authentification JWT en définissant la valeur de la propriété
servlet.jwt.auth.enabledsur true dans le fichier customer_overrides.properties . Par exemple,xapirest.servlet.jwt.auth.enabled=true. - En fonction de la décision d'utiliser un type spécifique de chargeur de clés, vous devez définir les configurations appropriées. Le chargeur de clés est utilisé pour obtenir la clé publique afin de vérifier le jeton JWT entrant. Sterling™ Order Management System, par défaut, fournit les types de chargeurs de clés suivants. Important : si vous utilisez IBM Sterling® Order Management System on IBM CloudSaaS, ne modifiez pas les propriétés par défaut. Utilisez la propriété spécifique à l'émetteur. Par exemple, ne modifiez pas le chargeur de clés yfs.yfs.jwt.verify.keyloader . A la place, ajoutez un nouveau chargeur de clés spécifique à l'émetteur, yfs.yfs.jwt.< nom_émission>.verify.keyloader.
Tableau 1. Chargeurs de clés fournis par l'application Type de chargeur de clés Description Configurations Chargeur de clés de propriétés Il lit une propriété spécifique à partir des propriétés yfs pour obtenir la clé. La propriété contient le "kid" (ID de clé) obtenu à partir de l'en-tête JWT. En fonction de l'enfant, il tente de lire la valeur de la clé à partir des propriétés. La valeur de la clé doit être un format PEM codé Base64 . Les propriétés suivantes doivent être configurées dans le fichier customer_overrides.properties pour utiliser le chargeur de clés de propriétés: yfs.yfs.jwt.verify.keyloader=propertiesLe chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.verify.keyloader=propertiesyfs.yfs.jwt.verify.propkeyloader.kid=base64 encoded public key
Chargeur de clé publique d'URI https Il permet de télécharger la clé publique ou le certificat à partir d'un URI https au moment de la vérification du jeton Web JSON (JWT). Si un URI https est utilisé, le certificat de cet URI https doit être ajouté au magasin de clés de confiance de la machine virtuelle Java ou du serveur d'applications pour que l'application puisse se connecter à l'URI. Les propriétés suivantes doivent être configurées dans le fichier customer_overrides.properties pour utiliser le chargeur de clé publique d'URI https. Par défaut, Sterling Order Management System fournit les chargeurs de clés d'URI https suivants. Vous pouvez utiliser l'une de ces options de chargeur de clés d'URI. - httpsjwks-Les propriétés suivantes doivent être configurées dans le fichier customer_overrides.properties pour utiliser le chargeur de clés httpsjwks:
yfs.yfs.jwt.verify.keyloader=httpsjwksLe chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.verify.keyloader=httpsjwksyfs.yfs.jwt.verify.keyloader.httpsuri=URI to get the key in JWKS formatLe chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.verify.keyloader.httpsuri=URI to get the key in JWKS format
- httpsjwk-Les propriétés suivantes doivent être configurées dans le fichier customer_overrides.properties pour utiliser le chargeur de clés httpsjwk:
yfs.yfs.jwt.verify.keyloader=httpsjwkLe chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.verify.keyloader=httpsjwkyfs.yfs.jwt.verify.keyloader.httpsuri=URI to get the key in JWK formatLe chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.verify.keyloader.httpsuri=URI to get the key in JWK format
- httpsbase64 -Les propriétés suivantes doivent être configurées dans le fichier customer_overrides.properties pour utiliser le chargeur de clés httpsbase64 :
yfs.yfs.jwt.verify.keyloader=httpsbase64Le chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.verify.keyloader=httpsbase64yfs.yfs.jwt.verify.keyloader.httpsuri=URI to get the key in Base64 encoded formatLe chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.verify.keyloader.httpsuri=URI to get the key in Base64 encoded format
Chargeur de clés personnalisé Il permet de charger la clé de vérification à partir d'un coffre ou d'un stockage personnalisé. L'implémentation personnalisée doit mettre en œuvre l'interface IPLTJWTVerificationKeyLoader. Cette interface fournit une méthode pour redonner une clé. Cette clé est utilisée pour vérifier la signature de JWS. Si nécessaire, vous pouvez configurer un chargeur de clés personnalisé distinct pour chaque émetteur. La propriété suivante doit être configurée dans le fichier customer_overrides.properties pour utiliser un chargeur de clés personnalisé: yfs.yfs.jwt.verify.keyloader=class name implementing IPLTJWTVerificationKeyLoader interfaceLe chargeur de clés spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.<issuer name>.verify.keyloader=class name implementing IPLTJWTVerificationKeyLoader interfaceRemarque: Si vous utilisez un fournisseur tiers pour votre jeton JWT, vous pouvez utiliser la configuration httpsjwks keyloader pour l'authentification JWT. Si le fournisseur ne prend pas en charge un noeud final JWKS (JSON Web Key Set), vous pouvez utiliser les autres options répertoriées dans le tableau Tableau 1 . - Identifiez l'utilisateur OMS à partir des réclamations de contenu JWT entrantes. Les détails de l'utilisateur OMS peuvent être fournis en configurant l'une des propriétés suivantes dans le fichier customer_overrides.properties :
- Chemin d'accès utilisateur OMS -
yfs.yfs.jwt.defclaimparser.user.path=<path relative to the JWT body JSON to read the user>Le chemin d'accès utilisateur OMS spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.defclaimparser.user.path=path relative to the JWT body JSON to read the user - Chemin d'accès à l'adresse électronique de l'utilisateur OMS -
yfs.yfs.jwt.defclaimparser.user.email.path=path relative to the JWT body JSON to read the user emailLe chemin d'accès à l'adresse électronique de l'utilisateur OMS spécifique à l'émetteur peut être configuré comme suit:
yfs.yfs.jwt.issuer name.defclaimparser.user.email.path=path relative to the JWT body json to read the user email
Exemple
Si le contenu JWT possède la structure JSON suivante:{ "iat": 1516239022, "exp": 1531762065, "userid" : "testuser", "otherinfo" : { "email": "test@foo.com", "usergroup":"testGroup"} }Ensuite, pour spécifier le chemin d'accès de l'utilisateur, définissez la propriété sur:yfs.yfs.jwt.defclaimparser.user.path=useridPour spécifier le chemin d'accès à l'adresse électronique de l'utilisateur, définissez la propriété sur:yfs.yfs.jwt.defclaimparser.user.email.path=otherinfo.emailEn d'autres termes, ici, le point (.) dans le chemin est utilisé pour accéder à un objet enfant dans la structure JSON, pour indiquer que l'objet
emailest enfant de l'objetotherinfo.Remarque: Si les valeurs de<path relative to the JWT body JSON to read the user>ou<path relative to the JWT body JSON to read the user email>contiennent un point (.), vous devez définir la propriétéyfs.yfs.jwt.defclaimparser.path.delimde sorte qu'elle utilise un délimiteur autre que le point (.). En effet, le point est un caractère spécial utilisé comme délimiteur par défaut.yfs.yfs.jwt.defclaimparser.path.delim=<value>Où
valueest un caractère qui n'est pas présent danspath relative to the JWT body JSON to read the useroupath relative to the JWT body JSON to read the user email.Lorsque les chemins contiennent des points (.), vous pouvez utiliser la propriété
yfs.yfs.jwt.defclaimparser.path.delimpour définir un autre délimiteur afin de spécifier le chemin.Par exemple, si le contenu du jeton Web JSON (JWT) possède la structure JSON suivante, où le chemin d'utilisateur et le chemin d'e-mail de l'utilisateur comportent le caractère point:{ "iat": 1516239022, "exp": 1531762065, "www.foo.com/userid" : "testuser", "www.foo.com/otherinfo" : { "email": "test@foo.com", "usergroup":"testGroup"} }Ensuite, pour modifier le délimiteur, définissez la propriété suivante:
Etant donné queyfs.yfs.jwt.defclaimparser.path.delim=$$n'est pas présent dans le chemin, il peut être utilisé comme délimiteur alternatif.Désormais, le chemin de l'utilisateur et le chemin de l'adresse électronique de l'utilisateur peuvent être spécifiés comme suit:yfs.yfs.jwt.defclaimparser.user.path=www.foo.com/userid yfs.yfs.jwt.defclaimparser.user.email.path=www.foo.com/otherinfo$emailIci,
$dans le chemin indique que l'objetemailest enfant de l'objetwww.foo.com/otherinfo. - Chemin d'accès utilisateur OMS -