Definizione del modello ThingWorx in Composer > Protezione > Autenticazione Single Sign-On > Configurare ThingWorx come provider di risorse quando PingFederate è il CAS
Configurare ThingWorx come provider di risorse quando PingFederate è il CAS
È possibile configurare ThingWorx come provider di risorse per consentire richieste URI ThingWorx tramite il protocollo OAuth2.
I provider di servizi possono utilizzare la risposta del provider di risorse per creare in rendering e mostrare i dati memorizzati in ThingWorx.
ThingWorx come provider di risorse è responsabile della convalida del token di accesso e degli ambiti di ogni richiesta di risorse.
Nelle sezioni riportate di seguito vengono descritti i passi di configurazione necessari per attivare ThingWorx come provider di risorse in ThingWorx. Potrebbe essere necessario consultare altri amministratori dei prodotti PTC e di provider identificativi dell'organizzazione per configurare altre applicazioni configurate per questo scopo.
Panoramica del processo
Per configurare ThingWorx come provider di risorse, attenersi alla procedura descritta di seguito.
1. Configurare l'autenticazione·Single Sign-On. È un prerequisito per questo processo.
* 
È consigliabile che il provider di servizi per il canale di comunicazione del provider di risorse sia SSL.
Per alcune delle impostazioni utilizzate in questi passi di configurazione, è necessario ottenere i valori dall'installazione di PingFederate.
Configurare il file resourceServerSettings.json
1. Creare il file resourceServerSettings.json nella stessa directory di sso-settings.json.
Di seguito viene riportata una struttura di esempio del file resourceServerSettings.json:
{
"ResourceServerSettings": {
"accessTokenServicesSettings": {
"userAuthenticationConverterClassName": "com.ptc.eauth.identity.oauth2.rs.IntrospectionUserAuthenticationConverter",
"userAuthenticationConverterUserNameAttribute": "See information in the table below",
"oauthTokenEndPoint": "https://<pingfed.server>:9031/as/token.oauth2",
"checkTokenEndpointUrl": "https://<pingfed.server>:9031/as/introspect.oauth2",
"clientId": "See information in the table below",
"clientSecret": "See information in the table below",
"chainedGrantType": "password"
},
"globalScopes": "THINGWORX",
"uriScopes": [
{
"uri": "See information in the table below",
"scopes": "See information in the table below",
"method": "See information in the table below"
}
]
}
2. Assicurarsi di modificare il valore di ogni parametro in base al requisito specifico. L'implementazione può variare e dipende da diversi fattori, ad esempio dai criteri di protezione dell'organizzazione e dal CAS per l'ambiente federato in uso. Utilizzare le informazioni nelle tabelle riportate di seguito come guida per impostare i valori dei diversi parametri.
Impostazioni di ResourceServerSettings.accessTokenServicesSettings
Parametro
Descrizione
Valore
userAuthenticationConverterClassName
Utilità interna.
com.ptc.eauth.identity.oauth2.rs.IntrospectionUserAuthenticationConverter
userAuthenticationConverterUserNameAttribute
Facoltativo. Definisce il nome del campo contenente l'ID utente. Se la proprietà non è impostata, il valore di default è username.
oauthTokenEndPoint
Specifica l'endpoint del token OAuth di PingFederate (vedere l'immagine sotto).
https://<server.pingfed>:<porta.pingfed>/as/token.oauth2
checkTokenEndpointUrl
Specifica l'endpoint di introspezione del token OAuth di PingFederate (vedere l'immagine sotto).
https://<server.pingfed>:<porta.pingfed>/as/introspect.oauth2
clientId
Specifica l'identificatore client da utilizzare per la convalida dei token di accesso dal server di autorizzazione.
clientSecret
Valore segreto del client.
chainedGrantType
Riservato per un eventuale utilizzo in futuro.
password
Impostazioni di ResourceServerSettings.globalScopes
Parametro
Descrizione
Esempi
globalScopes
Elenco di ambiti globali separati da virgole. Include l'insieme minimo di ambiti necessari per accedere a una risorsa. Se il parametro è vuoto o mancante, viene impostato THINGWORX come ambito globale di default. Non lasciare vuoto questo parametro. Se non è presente alcun ambito dedicato, impostare THINGWORX come valore.
"globalScopes": "THINGWORX"
"globalScopes": "THINGWORX_APP1,THINGWORX_APP2"
Impostazioni di ResourceServerSettings.uriScopes
Parametro
Descrizione
Esempio
uri
Serie URI. Definisce la risorsa o il gruppo di risorse per cui sono richiesti ambiti aggiuntivi oltre agli ambiti globali.
/Things/** - control all Things
/Things/Thing1 – control Thing1
scopes
Elenco delimitato da virgole di ambiti aggiuntivi. Può accedere alla risorsa solo l'utente che dispone di concessioni per tutti gli ambiti elencati (inclusi quelli globali).
method
Facoltativo. Definisce il metodo URI a cui verrà applicato l'ambito.
* 
Se non viene specificata una proprietà di metodo, si presuppone che l'URI specificato sia protetto dall'ambito specificato per tutto il metodo HTTP.
I valori possibili sono tutti i metodi consentiti nel protocollo REST, ad esempio GET o POST.
Se sono definiti ambiti per un URI, per accedere alla risorsa è necessario concedere gli ambiti globali e gli ambiti URI definiti. Se per la risorsa richiesta è applicabile più di una regola URI, per accedere alla risorsa devono essere concessi tutti gli ambiti pertinenti. Per evitare l'accesso alle risorse con restrizioni, aggiungere URIscope a questi endpoint REST con un ambito che non esiste nel server di autorizzazione (ad esempio, PingFed). Oltre alla protezione, agli ambiti vengono applicati anche permessi specifici di ThingWorx basati sull'utente. Ad esempio, nel caso in cui l'utente A richieda una risorsa con gli ambiti corretti senza disporre del permesso, la richiesta non riesce e genera un errore 403.
Esempi
L'esempio che segue è uno schema pertinente della configurazione di resourceServerSettings.json :

"globalScopes": "THINGWORX",
"uriScopes": [
{
"uri": "/Things/**",
"scopes": "THINGWORX_THING_READ"
},
{
"uri": "/Things/WriteThing",
"scopes": "THINGWORX_THING_WRITE"
"method": "POST"
}
]
* 
In ogni caso di utilizzo della tabella riportata di seguito, se l'utente non fornisce le concessioni richieste, ThingWorx non fornirà la risorsa.
Casi di utilizzo
Richiesta URI
Concessioni obbligatorie
Note
GET /Thingworx/Mashups/Mashup1
THINGWORX
La richiesta URI non corrisponde ad alcuna regola di uriScopes. Viene applicata la regola globalScope THINGWORX.
GET /Thingworx/Things/WriteThing
THINGWORX, THINGWORX_THING_READ
Vengono applicate la regola gobalScope THINGWORX e la prima regola uriScope.
POST /Thingworx/Things/WriteThing
THINGWORX, THINGWORX_THING_READ, THINGWORX_THING_WRITE
Vengono applicate la regola globalScope THINGWORX, la prima e la seconda regola uriScope.
Creare connessioni PingFederate: client OAuth per ThingWorx come provider di risorse
Il client OAuth è un punto di connessione che consente a PingFederate di fornire i token di accesso a ThingWorx. I provider di servizi utilizzano questi token di accesso per richiedere a ThingWorx risorse protette da OAuth.
1. In PingFederate cercare Clients. Aprire il risultato della ricerca Clients-Application > OAuth e fare clic su Add Client.
2. Nel campo CLIENT ID immettere un valore. Usare lo stesso valore utilizzato per il parametro ResourceServerSettings.accessTokenServicesSettings.clientId quando è stato configurato il fileresourceServerSettings.json.
3. Nel campo NAME immettere un valore, che verrà visualizzato nell'elenco dei client di PingFederate.
4. Nel campo DESCRIPTION immettere una descrizione.
5. Nella sezione CLIENT AUTHENTICATION selezionare CLIENT SECRET e immettere un valore segreto client. Usare lo stesso valore utilizzato per il parametro ResourceServerSettings.accessTokenServicesSettings.clientSecret quando è stato configurato il file resourceServerSettings.json.
6. Lasciare vuota la sezione REDIRECT URIS.
7. Nella sezione ALLOWED GRANT TYPES selezionare Resource Owner Password Credentials e Access Token Validation (Client is a Resource Server).
8. Nella sezione DEFAULT ACCESS TOKEN MANAGER selezionare Default.
9. Nella sezione PERSISTENT GRANTS MAX LIFETIME selezionare Use Global Setting.
10. Nella sezione REFRESH TOKEN ROLLING POLICY selezionare Roll.
11. Fare clic su Save.
Gestione degli ambiti in PingFederate
1. In PingFederate aggiungere tutti gli ambiti menzionati nel file resourceServerSettings.json alla pagina Scope Management della sezione OAuth Settings, incluso globalScopes. Ripetere i passi descritti di seguito per ogni ambito.
1. Aggiungere un ambito nel campo Scope Value.
2. Aggiungere una descrizione per l'ambito nel campo Scope Description.
3. Fare clic su Add.
4. Fare clic su Save.
Ogni volta che un insieme di ambiti viene modificato in resourceServerSettings.json, è necessario aggiornare l'elenco di conseguenza. Si consiglia inoltre di aggiornare l'elenco prima di ricaricare resourceServerSettings.json in ThingWorx.
* 
Se non è stato definito un ambito nel file resourceServerSettings.json in ResourceServerSettings.globalScopes, è necessario aggiungere l'ambito THINGWORX (in PingFederate) come THINGWORX nell'ambito globale di default.
Aggiornamento di ThingWorx con il file resourceServerSettings.json modificato
Dopo avere aggiornato il file resourceServerSettings.json, è necessario riavviare Tomcat.
Se si modificano solo gli ambiti (sia globalScopes che uriScopes), non è necessario riavviare Tomcat. Attenersi invece alla procedura descritta di seguito.
1. Accedere a Composer come amministratore.
2. Accedere agli autenticatori e aprire ThingworxSSOAuthenticator.
3. Aprire i servizi.
4. Eseguire il servizio ReloadResourceProviderScopes.
È stato utile?