Token JWT personalizzati |
Scroll |
JSON Web Token (JWT) è uno standard aperto (RFC 7519) che definisce un modo compatto e autonomo per trasmettere informazioni tra parti diverse in un oggetto JSON. Le informazioni possono quindi essere verificate e considerate attendibili in quanto dotate di firma digitale. I token JWT possono essere firmati utilizzando un 'valore segreto' (con l'algoritmo HMAC) o con una coppia di chiavi pubblica/privata utilizzando la codifica RSA o ECDSA.
Benché i token JWT possano essere crittografati per garantire la riservatezza nelle comunicazioni tra le parti, in questa sede vengono illustrati i token firmati. I token firmati possono verificare l'integrità delle attestazioni che contengono, mentre i token crittografati nascondono tali attestazioni ad altre parti. Mentre i token vengono firmati utilizzando coppie di chiavi pubblica/privata, la firma certifica anche che solo la parte che detiene la chiave privata è quella che ha firmato il token.
Per consentire l'integrazione di Therefore™ in un'infrastruttura di autenticazione fornita da un cliente, Therefore™ supporta la dichiarazione di emittenti di token JWT personalizzati. Mediante questa funzionalità , un cliente può creare e inviare token JWT a Therefore per l'autenticazione degli utenti.
Therefore™ supporta token JWT firmati HS256 e RS256. Per HS256 è necessario salvare in Therefore™ una chiave condivisa per consentire a Therefore di convalidare il token al momento della connessione. Per RS256, la chiave pubblica del certificato utilizzato per firmare il token deve essere caricata come file .cer in Therefore™.
Caso d'uso: Il cliente ha già un'infrastruttura di autenticazione o vuole integrare Therefore™ Portal nel proprio portale. Se un utente è già autenticato nel portale del cliente, non deve autenticarsi di nuovo per Therefore™, al fine di offrire un'esperienza di tipo SSO tra applicazioni diverse. L'applicazione del portale cliente potrà quindi creare il token cliente richiesto e utilizzarlo per fare accedere automaticamente l'utente a Therefore™ con il proprio account utente. Non è richiesto un login aggiuntivo.
1.Configurazione in Thereforeâ„¢ Solution Designer: Le seguenti informazioni devono essere compilate nei rispettivi campi:
ID emittente: deve corrispondere all'ID emittente del token JWT inviato a Therefore™. Nome: è possibile assegnare un nome qualsiasi all'interfaccia utente (soltanto). È facoltativo. Attivo: consente di abilitare o disabilitare un emittente cliente. Codice segreto / Certificato: definire una chiave condivisa o caricare un file .der per la convalida del token.
2.Configurare l'utilizzo dell'archivio dell'insieme di credenziali delle chiavi Azure per i codici segreti condivisi:
Se i codici segreti devono essere salvati in un insieme di credenziali delle chiavi Azure, è necessario definire le seguenti chiavi di registro:
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": "<CustomerId>",  "nbf": 1547106872,  "exp": 1547108072,  "urn:oauth:scope": "therefore_user"  "iss":https://testissuer.therefore.net }  aud = CustomerId del sistema Therefore iss = Issuer Id (ID emittente) – deve corrispondere alla configurazione Therefore urn:oauth:scope = ambito del token - valori possibili "therefore_user" (tutte le autorizzazioni utente) o "therefore_read" (sola lettura)
3.I token JWT personalizzati possono essere utilizzati per autenticare gli utenti di Thereforeâ„¢ in Web Client, Portal, API, WebAPI.
Esempio (Web Client): https://<server>/TWA/Client/Web/Viewer/Viewer.aspx?docno=349738&ssoToken=<token> https://<server>/TWA/Portal/Portal.aspx?qNo=123&ssoToken=<token>
API di esempio: string sToken = "<token>; string sNodeInternal, sNodeFriendly; TheServer s = new TheServer(); s.ConnectBearerToken(TheClientType.CustomApplication, sToken, "", "", "", true, TheConnectMode.NoLicenseMove, out sNodeInternal, out sNodeFriendly);
4.È possibile definire autorizzazioni speciali per un token. Riferimento: Autorizzazioni per i token JWT.
Procedura di test:
1.Creare i token di prova qui: https://jwtbuilder.jamiekurtz.com/ 2.Configurare l'emittente in Thereforeâ„¢ Solution Designer. 3.Utilizzare il token con una delle opzioni di accesso descritte sopra (Web Client, Portal, API, Web API).
|
---|