Creazione di autenticazioni
ThingWorx Flow è in grado di gestire qualsiasi schema di autenticazione. È dotato di un meccanismo di gestione più semplice per OAuth che può essere impostato tramite configurazione. Qualsiasi altra autenticazione rientra nella classificazione della connessione e deve essere codificata dallo sviluppatore del connettore durante la creazione di una connessione con il servizio attraverso l'oggetto connessione.
La maggior parte dei servizi richiede una qualche forma di autenticazione. È possibile aggiungere un meccanismo di autenticazione utilizzando i comandi di aggiunta connessione e di aggiunta OAuth. L'interfaccia della riga di comando di ThingWorx Flow e il server ThingWorx Flow supportano l'autenticazione OAuth 2.0 e OAuth 1.0.
I metodi di autenticazione comunemente utilizzati sono descritti nell'elenco che segue.
Autenticazione di base - Si tratta di uno schema di autenticazione semplice integrato nel protocollo HTTP. Richiede che vengano specificati il nome utente e la password quando si effettua una richiesta.
Autenticazione mediante chiave API - Consente di accedere ai dati. Ad esempio, questo meccanismo comporta l'invio di una coppia chiave-valore come parametro di stringa di interrogazione o come intestazione.
Autenticazione OAuth - Si tratta di un metodo di autenticazione basato su token che consente l'utilizzo delle informazioni dell'account da parte di qualsiasi servizio esterno senza esporre la password. È possibile, ad esempio, accedere alle risorse di un servizio accedendo all'account.
Ad esempio, Windchill utilizza l'autenticazione di base e OAuth.
Creazione di OAuth
Per creare un elemento OAuth, attenersi alla procedura descritta di seguito.
1. Dal prompt dei comandi, eseguire i comandi seguenti:
a. cd <user project root directory>
b. flow add oauth <oauth name>
* 
Il nome OAuth non può contenere caratteri speciali ad eccezione dei trattini (-). Ad esempio, il nome OAuth può essere nome connettore-nome oauth.
Per il comando OAuth sono disponibili le opzioni seguenti:
Opzioni
Descrizione
Tipo di dati
--version
Visualizza il numero di versione.
[booleano]
--help
Visualizza la guida.
[booleano]
--parentDir, -d
Directory padre del progetto.
[default: "."]
--logLevel, -1
Imposta il livello di registrazione.
[default: "info"]
--useV1
Indica che viene utilizzata la configurazione OAuth versione 1.
[default: false]
Viene creata una nuova cartella <nome connettore-nome oauth> in <DirProgetto>/auth/oauth/ contenente il file config.json.
Se ad esempio si utilizza un'azione correlata a Gmail nel workflow, è necessario innanzitutto eseguire l'accesso all'account Gmail e quindi autorizzare il workflow di ThingWorx Flow a eseguire determinati task automaticamente come mostrato nella figura che segue:
I parametri di accesso mostrati nella figura precedente sono impostati nel file config.json. Il file config.json completato si presenta come mostrato di seguito:
{
"_id": "56a0df8552199d8d51e0280d",
"created_at": "2017-04-11T14:08:59.858Z",
"updated_at": "2017-04-11T14:08:59.858Z",
"uid": "oau652869757c50d1cfbd1061",
"category": "Google",
"name": "google_gmail",
"title": "Gmail",
"icon": "google-mail",
"__v": 0,
"version": "v1",
"oauth2_params_other": [
"{\"access_type\":\"offline\"}"
],
"oauth2_params_scope": [
"{\"https://www.googleapis.com/auth/gmail.labels\":\"Manage mailbox labels\"}",
"{\"https://www.googleapis.com/auth/gmail.insert\":\"Insert mail into your mailbox\"}",
"{\"https://www.googleapis.com/auth/gmail.modify\":\"All read/write operations except immediate, permanent deletion of threads and messages, bypassing Trash.\"}",
"{\"https://www.googleapis.com/auth/gmail.readonly\":\"Read all resources and their metadata—no write operations.\"}",
"{\"https://www.googleapis.com/auth/gmail.compose\":\"Create, read, update, and delete drafts. Send messages and drafts.\"}",
"{\"https://www.googleapis.com/auth/gmail.send\":\"Send email on your behalf\"}"
],
"oauth2_validate_method": "GET",
"oauth2_validate_headers": [
"{\"Authorization\":\"Bearer {access_token}\"}",
"{\"Content-Type\":\"application/json\"}"
],
"oauth2_validate_url": "https://www.googleapis.com/gmail/v1/users/me/labels",
"oauth2_refresh_data": [
"{\"grant_type\":\"refresh_token\"}",
"{\"refresh_token\":\"{refresh_token}\"}"
],
"oauth2_refresh_url": "/token",
"oauth2_token_data": [
"{\"grant_type\":\"authorization_code\"}"
],
"oauth2_token_url": "/token",
"oauth2_auth_query": [
"{\"response_type\":\"code\"}",
"{\"approval_prompt\":\"force\"}",
"{\"access_type\":\"{access_type}\"}"
],
"oauth2_auth_url": "/auth",
"oauth2_no_state": false,
"env_production_params": [
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}",
"{\"client_id\":\"{{{production.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{production.CLIENT_SECRET}}}\"}"
],
"env_pre_prod_params": [
"{\"client_id\":\"{{{pre_prod.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{pre_prod.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_staging_params": [
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}",
"{\"client_id\":\"{{{staging.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{staging.CLIENT_SECRET}}}\"}"
],
"env_development_params": [
"{\"client_id\":\"{{{development.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{development.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_local_params": [
"{\"client_id\":\"{{{local.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{local.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"base_url": "https://accounts.google.com/o/oauth2",
"oauth_type": "OAuth2",
"development_phase": "gold",
"advanced_enabled": true,
"express_enabled": true,
"deleted_at": null,
"published": true
}
* 
OAUTH_ENDPOINT_OAUTH_RETURN viene archiviato automaticamente dal server ThingWorx Flow in base al valore presente nel file deploymentConfig.json.
La tabella descrive i vari campi importanti e il significato del file config.json.
Proprietà del file config.json
Proprietà
Descrizione
base_url
URL di base. Per ulteriori informazioni, fare riferimento la documentazione del provider di identificativi (IdP).
oauth_type
Non modificare questa proprietà.
Per default, l'interfaccia della riga di comando genera la configurazione OAuth2. Per generare una configurazione OAuth1, utilizzare l'opzione –useV1.
oauth2_params_scope
Ambiti definiti dall'applicazione. Questa proprietà determina il tipo di operazioni che possono essere eseguite sul sistema. Il token ha ambiti per cui l'utente concede l'accesso all'applicazione.
oauth2_auth_url
Genera la schermata per i prompt di nome utente e password per l'applicazione.
Questo valore può essere assoluto o relativo rispetto all'URL di base.
oauth2_auth_query
Parametri richiesti dall'IdP durante una richiesta all'URL di autenticazione.
oauth2_token_url
Utilizzata per richiedere un token di accesso o di aggiornamento. Questo valore può essere un URL assoluto o relativo rispetto all'URL di base.
oauth2_token_data
Contiene i dati che devono essere inviati a oauth2_token_url.
oauth2_refresh_url
Genera un token di aggiornamento. Alcuni IdP utilizzano lo stesso URL come URL del token per richiedere un token di aggiornamento.
oauth2_refresh_data
Contiene i dati che devono essere inviati a oauth2_refresh_url.
oauth2_validate_url
Convalida un token.
oauth2_validate_headers
Intestazioni inviate nella richiesta a oauth2_validate_url.
oauth2_validate_method
Il metodo HTTP viene utilizzato per effettuare la richiesta di convalida.
Il file di configurazione contiene informazioni che ThingWorx Flow utilizza per eseguire varie operazioni OAuth2.
I valori di proprietà sono matrici di stringhe e quindi richiedono l'escape. I valori possono essere valori costanti o si può utilizzare la sostituzione del testo. env_local_params, env_staging_params e env_production_params consentono di variare il valore di vari parametri in base alla distribuzione.
Le informazioni importanti nel file config.json sono client_id e client_secret.
Per informazioni sulla distribuzione dei connettori, fare riferimento alla sezione relativa alla distribuzione.
È consigliabile che le configurazioni OAuth non contengano informazioni sensibili o specifiche del tenant. Le informazioni includono client_id e client_secret. Le informazioni sono specificate come indicato di seguito:
"env_pre_prod_params": [
"{\"client_id\":\"{{pre_prod.CLIENT_ID}}\"}",
"{\"client_secret\":\"{{pre_prod.CLIENT_SECRET}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_staging_params": [],
"env_development_params": [
"{\"client_id\":\"{{development.CLIENT_ID}}\"}",
"{\"client_secret\":\"{{development.CLIENT_SECRET}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_local_params": [
"{\"client_id\":\"{{local.CLIENT_ID}}\"}",
"{\"client_secret\":\"{{local.CLIENT_SECRET}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
Se le informazioni non sono specifiche di una distribuzione, non devono essere precedute dal nome della distribuzione, ad esempio locale o sviluppo.
Per informazioni sulla creazione di applicazioni che utilizzano le API Google, fare riferimento all' API Console Help. Per qualsiasi altra applicazione, fare riferimento alla documentazione del sistema dell'IdP.
Per ulteriori informazioni sulla creazione della configurazione OAuth, fare riferimento all' Appendice B.
Configurazione di OAuth per connettori predefiniti
ThingWorx Flow viene fornito con una serie di connettori che richiedono OAuth per eseguire l'autorizzazione. Il primo passo consiste nel creare un file di caricamento OAuth. Si può scegliere di attivare tutte le configurazioni OAuth o solo alcune. Il file di caricamento OAuth si presenta nel formato seguente:
{
"onedrive": {
"OneDrive": {
"CLIENT_ID": "<client-id-here>"
"CLIENT_SECRET": "<client-secret-here>"
}
}
"trello": {
"Trello": {
"CONSUMER_KEY":"<consumer-key-here>",
"CONSUMER_SECRET":"<consumer-secret-here>"
}
}
}
Nel file precedente, le chiavi al livello superiore sono i nomi dei connettori. Un esempio di configurazione OAuth2 e configurazione OAuth1 è OneDrive.
Fare riferimento al documento per acquisire i parametri client-id e client-secret per ognuno dei connettori. Il nome visualizzato della configurazione OAuth è al livello successivo. È il testo che viene visualizzato negli elenchi a discesa di OAuth2 come Aggiungi nuovo accesso <nome visualizzato>.
Utilizzare lo strumento flow-deploy per caricare le configurazioni OAuth nel sistema. Se esiste già una configurazione corrispondente basata su connettore e nome visualizzato, viene aggiornata o ne viene creata una nuova.
Per informazioni sulla configurazione di OAuth per altri connettori predefiniti, fare riferimento all'Help Center di ThingWorx.
Per ulteriori informazioni, fare riferimento all'argomento Distribuzione dei connettori.
Dopo che lo strumento ha completato la distribuzione, le nuove configurazioni OAuth sono disponibili.