Jetons JWT personnalisés |
Scroll |
JSON Web Token (JWT) est un standard ouvert (RFC 7519) qui définit un moyen compact et autonome de transmettre en toute sécurité des informations entre les parties sous forme d'objet JSON. Ces informations peuvent être vérifiées et approuvées car elles sont signées numériquement. Les jetons JWT peuvent être signés à l'aide d'une clé « secrète » (à l'aide de l'algorithme HMAC) ou d'une paire de clés publique/privée avec RSA ou ECDSA.
Bien que les jetons JWT puissent être chiffrés pour assurer la sécurité des échanges entre les parties, nous allons nous concentrer sur les jetons signés. Les jetons signés peuvent vérifier l'intégrité des revendications qu'ils contiennent, tandis que les autres parties n'ont pas accès à ces dernières dans les jetons chiffrés. Lorsque les jetons sont signés à l'aide d'une paire de clés publique/privée, la signature certifie également que seule la partie qui détient la clé privée l'a effectivement signée.
Pour activer l'intégration de Therefore™ à une infrastructure d'authentification fournie par le client, Therefore™ prend en charge la déclaration des émetteurs de jetons JWT personnalisés. Grâce à cette fonctionnalité, un client peut créer et envoyer des jetons JWT à Therefore pour authentifier les utilisateurs.
Therefore™ prend en charge les jetons JWT signés via HS256 et RS256. En ce qui concerne HS256, une clé partagée doit être mémorisée dans Therefore™ pour autoriser l'application à valider le jeton lors de la connexion. En ce qui concerne RS256, la clé publique du certificat utilisé pour signer le jeton doit être téléchargée dans Therefore™ sous forme defichier .cer.
Exemples d'utilisation : Le client dispose déjà d'une infrastructure d'authentification ou souhaite intégrer Therefore™ Portal à son propre portail. Si un utilisateur est déjà authentifié dans le portail du client, il n'est pas nécessaire de l'authentifier à nouveau pour Therefore™. Une authentification unique (SSO) est ainsi mise en œuvre entre les différentes applications. L'application du portail du client peut alors créer un jeton personnalisé et l'utiliser pour connecter automatiquement l'utilisateur à Therefore™ à l'aide du compte utilisateur fourni. Aucune procédure de connexion complémentaire n'est nécessaire.
1.Configuration dans Therefore™ Solution Designer : Vous devez renseigner les champs ci-dessous comme suit :
ID de l'émetteur : doit être identique à l'ID de l'émetteur du jeton JWT envoyé à Therefore™. Nom : n'importe quel nom peut être fourni à l'interface utilisateur (uniquement). Ce champ est facultatif. Actif : permet d'activer ou de désactiver l'émetteur d'un client. Secret/certificat : définissez une clé partagée ou téléchargez un fichier .DER pour valider le jeton.
2.Configurez l'utilisation d'Azure Key Vault pour les secrets partagés :
Si les secrets doivent être mémorisés dans Azure Key Vault, définissez les clés de registre suivantes :
HEKY_LOCAL_MACHINE\Software\Therefore\Server •KeyVaultAppId •KeyVaultAppSec •KeyVaultBaseUri  Custom JWT Token Payload: {  "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": "Test AD",  "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress": "testad@therefore.net",  "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname": "ADOS\\testad",  "aud": "<IDclient>",  "nbf": 1547106872,  "exp": 1547108072,  "urn:oauth:scope": "utilisateur_therefore"  "iss":https://testissuer.therefore.net }  aud = ID client du système Therefore iss = ID de l'émetteur, doit être identique à la configuration Therefore urn:oauth:scope = portée du jeton - valeurs « utilisateur_therefore » (toutes les permissions utilisateur) ou « lecture_therefore » (lecture seule)
3.Les jetons JWT personnalisés permettent d'authentifier les utilisateurs de Therefore™ dans Web Client, Portal, API et WebAPI.
Exemple (Web Client)Â : https://<serveur>/TWA/Client/Web/Viewer/Viewer.aspx?docno=349738&ssoToken=<jeton> https://<serveur>/TWA/Portal/Portal.aspx?qNo=123&ssoToken=<jeton>
Exemple d'APIÂ : string sToken = "<jeton>; string sNodeInternal, sNodeFriendly; TheServer s = new TheServer(); s.ConnectBearerToken(TheClientType.CustomApplication, sToken, "", "", "", true, TheConnectMode.NoLicenseMove, out sNodeInternal, out sNodeFriendly);
4.Vous pouvez définir des permissions spéciales pour un jeton. Référence : Permissions associées aux jetons JWT
Procédure de test détaillée :
1.Créez ici des jetons de test : https://jwtbuilder.jamiekurtz.com/ 2.Configurez l'émetteur de jeton dans Therefore™ Solution Designer. 3.Utilisez le jeton avec n'importe quelle option d'accès décrite ci-dessus (Web Client, Portal, API, Web API).
|
---|