Risoluzione dei problemi relativi al Single Sign-On
Attivare la registrazione eventi per la risoluzione dei problemi correlati all'SSO. Per attivare la registrazione, utilizzare un file logback.xml standard nella directory ThingworxPlatform. Se un file logback.xml esiste già in questa posizione, è sufficiente aggiungere i logger SSO all'insieme di logger esistente. Per ulteriori informazioni sul file logback.xml vedere Configurazione della registrazione.
La funzionalità del file logback.xml è uno standard Java. Per istruzioni sulla configurazione di questi file, fare riferimento alla documentazione Java.
La tabella riportata di seguito fornisce informazioni sui package di logger che è possibile aggiungere per consentire di esaminare i problemi correlati alla configurazione dell'SSO di ThingWorx.
Ulteriori casi di utilizzo sono disponibili nel sito del supporto tecnico IAM.
Package
Descrizione
com.thingworx.security.authentication.sso
Package per tutti i componenti di autenticazione dell'SSO ThingWorx. Gli esempi riportati di seguito costituiscono le voci presenti nei package di logger:
Per i messaggi che vengono registrati nel log applicazioni, ad esempio:
LogUtilities.getInstance().getApplicationLogger([class name]):
<logger name="com.thingworx.security.authentication.sso" level="DEBUG"/>
I logger di protezione vengono utilizzati in molte classi di questo package. Ad esempio:
LogUtilities.getInstance().getSecurityLogger(ThingworxSSOAuthenticator.class);
Per attivare questi logger, aggiungere SecurityLog come logger padre radice:
<logger name="SecurityLog.com.thingworx.security.authentication.sso" level="DEBUG"/>
SecurityLog.com.thingworx.security.sso
Package per i workflow di autorizzazione delegata utilizzati dai connettori integrati quando ottengono i token di accesso e le relative configurazioni.
com.thingworx.ptc.eauth.identity
Package valido per tutti i componenti principali della libreria SSO PTC.
com.springframework.security
Package valido per tutti i componenti di protezione del framework Spring.
com.springframework.jdbc
Package valido per tutti i componenti di autenticazione JDBC del framework Spring.
Se si verificano errori nell'implementazione dell'SSO, è possibile esaminare gli elementi di risoluzione dei problemi riportati di seguito.
Problema
L'amministratore di ThingWorx non riesce ad accedere - È stato ricevuto l'errore invalid_scope
Descrizione
Dopo l'accesso, l'utente viene reindirizzato a una pagina di errore di ThingWorx che indica che il sistema sta riscontrando un errore di configurazione di autenticazione.
Soluzione
Uno o più ambiti registrati in un'entità multimediale o in un connettore di integrazione ThingWorx non corrispondono agli ambiti registrati in PingFederate (o nel CAS scelto). Questa mancata corrispondenza con gli ambiti di PingFederate può determinare il blocco dell'amministratore di ThingWorx. Gli ambiti del server delle risorse che sono stati registrati in ThingWorx possono essere visualizzati nel log di protezione. Per risolvere questo problema, attenersi alla procedura descritta di seguito.
1. Accedere a PingFederate e confrontare gli ambiti segnalati dal log di protezione ThingWorx con gli ambiti registrati in PingFederate. Per gli ambiti di ThingWorx che non sono registrati in PingFederate o che hanno nomi non corrispondenti, aggiungere l'ambito in PingFederate oppure modificare il nome in modo che corrisponda esattamente a quello di ThingWorx (anche se l'ortografia non è corretta).
2. Ora la pagina di approvazione delle concessioni funziona correttamente ed è possibile accedere ad ThingWorx come amministratore. In ThingWorx Composer passare al connettore di integrazione o all'entità multimediale che sta provando a utilizzare l'ambito. Rimuoverlo dalla tabella di registrazione degli ambiti per il connettore di integrazione o l'entità multimediale. Accedere a una nuova sessione di ThingWorx per verificare che l'accesso riesca.
3. Se ThingWorx prova a utilizzare un ambito non registrato, in PingFederate rimuovere l'ambito indesiderato dalla pagina di gestione degli ambiti. Se i nomi di ambito non corrispondono, eliminare l'ambito e registrarlo di nuovo con l'ortografia corretta in PingFederate e nell'entità multimediale o nel connettore di integrazione ThingWorx.
Problema
Il servizio su un connettore di integrazione o su un'entità multimediale non funziona - Non è stato possibile recuperare il token di accesso.
Descrizione
È stato eseguito l'accesso ad ThingWorx Composer e si dispone già di un token di accesso. È stato importato o creato un connettore con un ambito ed è stato effettuato il tentativo di eseguire un servizio sul connettore ma non ha funzionato.
Soluzione
Disconnettersi ed accedere nuovamente per aprire la pagina di approvazione delle concessioni per gli ambiti del connettore. Per consentire il funzionamento dei servizi, è necessario approvare la concessione per l'ambito appena registrato.
Ciò vale anche se si importano o si creano le entità multimediali che contengono gli ambiti.
Problema
Errori di inizializzazione bean e di contesto SSO all'avvio di ThingWorx.
Descrizione
Non è possibile avviare ThingWorx.
Soluzione
Per individuare il problema, fare riferimento ai log degli errori. Il testo alla fine del log degli errori o dell'avvertenza relativi all'inizializzazione bean e di contesto descrive il problema. Ad esempio, la descrizione di un errore possibile può essere come quella riportata di seguito.
SSOConfigurationException: BasicSettings > idpMetadataFilePath cannot be null or empty
Controllare il valore del parametro idpMetadataFilePath nel file sso-settings.json e aggiungere il valore appropriato.
Problema
L'applicazione o il mashup ThingWorx non si carica dopo che l'utente ha fatto clic su Don’t allow per gli ambiti richiesti nella pagina Request Grant Approval di PingFederate.
Descrizione
Dopo avere fatto clic su Don’t Allow nella pagina Request Grant Approval, il mashup non si carica e l'URL del browser termina con un hash "#" e un punto ".".
Soluzione
Per default, PingFederate utilizza un punto "." come segnaposto per un frammento e questo determina il problema. Per risolverlo, attenersi alla procedura descritta di seguito.
1. Nella posizione di installazione di PingFederate passare a <InstallazionePingFederate>\server\default\data\config-store\sanitize-fragments.xml.
2. Modificare questo file XML e rimuovere il punto "." dal segnaposto del frammento. La riga dovrebbe essere tipo <con:item name="FragmentPlaceholder"></con:item>
3. Riavviare il server di PingFederate.
Problema
L'autenticazione SAML in http://<server utente>:<porta>/Thingworx/runtime/index.html#mashup=<mashup utente> reindirizza a http://<server utente>:<porta>/Thingworx/runtime/index.html dopo l'accesso.
Descrizione
Durante l'accesso con un URL di mashup, la parte frammento dell'URL (ovvero #mashup=<mashuputente>) non viene inviata al server ThingWorx o al server di autorizzazione per il reindirizzamento appropriato dopo l'accesso perché il browser conserva i dati per consentirne l'utilizzo solo da parte del client. Pertanto, il server ThingWorx e il server di autorizzazione ricevono l'URL senza il frammento, ovvero http://<server utente>:<porta>/Thingworx/runtime/index.html.
Soluzione
Se gli URL di mashup vengono utilizzati come punto di autenticazione iniziale, crearli con parametri di interrogazioni anziché con parametri di frammenti.
In questo caso, quindi, utilizzare l'URL http://<server utente>:<porta>/Thingworx/runtime/index.html?mashup=<mashuputente>.
Problema
A ogni accesso viene mostrata la pagina Request Grant Approval di PingFederate.
Descrizione
PingFederate non restituisce ambiti durante il processo di approvazione delle concessioni.
Soluzione
In PingFederate:
1. Creare o modificare il file oauth-scope-settings.xml, disponibile nelle posizioni <Cartella di installazione di PingFederate>/server/default/data/config-store, come descritto di seguito.
<?xml version="1.0" encoding="UTF-8"?>
<z:config xmlns:z="http://www.sourceid.org/2004/05/config">
<z:item name="always-return-scope-for-authz-code">true</z:item>
</z:config>
2. Riavviare PingFederate.
Problema
L'autenticazione SAML in http://<server utente>:<porta>/Thingworx/runtime/index.html#mashup=<mashup utente> reindirizza a http://<server utente>:<porta>/Thingworx/runtime/index.html dopo l'accesso.
Descrizione
Durante l'accesso con un URL di mashup, la parte frammento dell'URL (ovvero #mashup=<mashuputente>) non viene inviata al server ThingWorx o al server di autorizzazione per il reindirizzamento appropriato dopo l'accesso perché il browser conserva i dati per consentirne l'utilizzo solo da parte del client. Pertanto, il server ThingWorx e il server di autorizzazione ricevono l'URL senza il frammento, ovvero http://<server utente>:<porta>/Thingworx/runtime/index.html.
Soluzione
Se gli URL di mashup vengono utilizzati come punto di autenticazione iniziale, crearli con parametri di interrogazioni anziché con parametri di frammenti.
In questo caso, quindi, utilizzare l'URL http://<server utente>:<porta>/Thingworx/runtime/index.html?mashup=<mashuputente>.
Problema
Nel file server.log di PingFederate viene visualizzato l'errore seguente:
ERROR [SpringLdapGuidFormatter] Decoded binary guidAttribute is empty. Please check that the source datastore is configured with 'objectGUID' as a binary attribute. [] Channel: channel1
Descrizione
A causa delle modifiche in PingFed 11.3, SCIM deve essere configurato manualmente.
Soluzione
Attenersi alla procedura descritta in Aggiungere attributi binari LDAP.
Problema
Quando AzureAD è configurato come CAS, l'utente finale non può ottenere i dati dal server delle risorse (RS) utilizzando un tipo di connessione SSO che si basa sui connettori ThingWorx (poiché il token di accesso è scaduto).
Descrizione
Il file SecurityLog.log visualizza l'errore riportato di seguito.
ERROR: [ Failed to retrieve access token. ][ A redirect is required to get the users approval ]
Soluzione
Impostare la proprietà mandatoryScopes in AuthorizationServersSettings nel file sso-settings.json in modo che includa offline_access.
È stato utile?