ThingWorx Flow > SDK de ThingWorx Flow > CLI de ThingWorx Flow > Creación de autenticaciones
Creación de autenticaciones
ThingWorx Flow puede controlar cualquier esquema de autenticación. Tiene un mecanismo de control más simple para OAuth que se puede configurar mediante configuración. Cualquier otra autenticación se encuentra dentro de la clasificación de conexión y lo debe codificar el desarrollador de conector al realizar una conexión con el servicio a través del objeto de conexión.
La mayoría de los servicios requieren autenticación en alguna forma. Se puede añadir un mecanismo de autenticación con los comandos add connection y add OAuth. La CLI de ThingWorx y el servidor de ThingWorx Flow soportan la autenticación OAuth 2.0 y OAuth 1.0.
Los métodos de autenticación que se utilizan con mayor frecuencia se describen en la siguiente lista:
Autenticación básica: un esquema de autenticación simple integrado en el protocolo HTTP. Es necesario proporcionar el nombre de usuario y la contraseña al realizar una solicitud.
Autenticación de clave de API: permite acceder a datos. Por ejemplo, este mecanismo implica el envío de un par de clave y valor como parámetro de cadena de consulta o una cabecera.
Autenticación basada en OAuth: método de autenticación basado en token que permite que cualquier servicio externo utilice la información de la cuenta sin exponer la contraseña. Por ejemplo, se puede acceder a los recursos de un servicio conectándose a la cuenta.
Por ejemplo, Windchill utiliza la autenticación básica y la basada en OAuth.
Creación de OAuth
Para crear un objeto OAuth, realice lo siguiente:
1. En el símbolo del sistema, ejecute los siguientes comandos:
a. cd <user project root directory>
b. flow add oauth <oauth name>
* 
El nombre de OAuth no puede contener caracteres especiales, excepto guiones (-). Por ejemplo, el nombre de OAuth puede ser el nombre de conector name-oauth.
Las siguientes opciones están disponibles para el comando de OAuth:
Opciones
Descripción
Tipo de datos
--version
Permite mostrar el número de versión.
[booleano]
--help
Permite mostrar la ayuda.
[booleano]
--parentDir, -d
El directorio padre del proyecto.
[por defecto: "."]
--logLevel, -1
Permite definir el nivel de registro.
[por defecto: "info"]
--useV1
Indica que se utiliza la configuración de la versión 1 de Oauth.
[por defecto: falso]
Se crea una nueva carpeta denominada <nombre de conector-nombre de oauth> en <dirProyecto>/auth/oauth/ que consta del fichero config.json.
Por ejemplo, si el usuario utiliza una acción relacionada con Gmail en el flujo de trabajo, primero debe iniciar sesión en la cuenta de Gmail y, a continuación, autorizar al flujo de trabajo de ThingWorx Flow para que realice determinadas tareas en su nombre, tal como se muestra en la siguiente figura.
Los parámetros de acceso que se muestran en la figura anterior se definen en el fichero config.json. El fichero config.json completado es como el siguiente:
{
"_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
}
* 
El servidor de flujos archiva automáticamente OAUTH_ENDPOINT_OAUTH_RETURN según el valor del fichero deploymentConfig.json.
En la tabla se indican los distintos campos importantes y la significancia del fichero config.json.
Propiedades del fichero config.json
Propiedad
Descripción
base_url
URL base. Para obtener más información, consulte la documentación del proveedor de identidades (IdP).
oauth_type
Esta propiedad no se debe modificar.
Por defecto, la CLI genera la configuración de OAuth2. Para generar una configuración de OAuth1, utilice la opción –useV1.
oauth2_params_scope
Ámbitos definidos por la aplicación. Permite determinar qué operaciones se pueden realizar en el sistema. El token tendrá ámbitos para los que el usuario concede acceso a la aplicación.
oauth2_auth_url
Permite generar la pantalla de solicitudes de nombre de usuario y contraseña para la aplicación.
Este valor puede ser absoluto o relativo al URL base.
oauth2_auth_query
Parámetros que el IdP requiere al realizar una solicitud al URL de autorización.
oauth2_token_url
Se utiliza para solicitar un token de acceso o token de renovación. Este valor puede ser un URL absoluto o un URL relativo al URL base.
oauth2_token_data
Contiene los datos que se deben enviar a oauth2_token_url.
oauth2_refresh_url
Permite generar un token de renovación. Algunos IdP utilizan el mismo URL que el URL de token para solicitar un token de renovación.
oauth2_refresh_data
Contiene los datos que se deben enviar a oauth2_refresh_url.
oauth2_validate_url
Permite validar un token.
oauth2_validate_headers
Cabeceras que se envían en la solicitud a oauth2_validate_url.
oauth2_validate_method
El método HTTP se utiliza para realizar la solicitud de validación.
En el fichero de configuración se incluye información que ThingWorx Flow utiliza para ejecutar varias operaciones de OAuth2.
Los valores de propiedad son matrices de cadenas y, por consiguiente, necesitan escape. Los valores pueden ser valores constantes o se puede utilizar la sustitución de texto. env_local_params, env_staging_params y env_production_params permiten variar el valor de distintos parámetros, en función de la implementación.
Los fragmentos de información importantes del fichero config.json son client_id y client_secret.
Para obtener información sobre la implementación de los conectores, consulte la sección sobre la implementación.
Las configuraciones de OAuth no deben contener información confidencial ni información específica del cliente. Se incluye client_id y client_secret. La información se especifica tal como se indica a continuación:
"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}\"}"
],
Si la información no es específica de una implementación, no debe contener el prefijo del nombre de implementación, como local o desarrollo.
Para obtener ayuda sobre la creación de aplicaciones que utilizan las API de Google, consulte la página API Console Help. Para cualquier otra aplicación, consulte la documentación del IdP o sistema.
Para obtener más información sobre la creación de la configuración de OAuth, consulte el Apéndice B.
Configuración de OAuths para conectores de fábrica
ThingWorx Flow incluye varios conectores que requieren OAuth para realizar la autorización. El primer paso es crear un fichero de carga de OAuth. Se pueden activar todas las configuraciones de OAuth o solo unas cuantas. El fichero de carga de OAuth tiene el siguiente formato:
{
"onedrive": {
"OneDrive": {
"CLIENT_ID": "<client-id-here>"
"CLIENT_SECRET": "<client-secret-here>"
}
}
"trello": {
"Trello": {
"CONSUMER_KEY":"<consumer-key-here>",
"CONSUMER_SECRET":"<consumer-secret-here>"
}
}
}
En el fichero anterior, las claves de nivel superior son nombres de conectores. Un ejemplo de configuración de OAuth2 y configuración de OAuth1 es OneDrive.
Consulte el documento para adquirir client-id y client-secret para cada uno de los conectores. El nombre mostrado de la configuración de OAuth se encuentra en el siguiente nivel. Este es el texto que se muestra en las listas desplegables de OAuth2 como Añadir nueva conexión de <nombre mostrado>.
Utilice la herramienta flow-deploy para cargar las instancias de OAuths en el sistema. Si ya existe una configuración coincidente basada en conector y nombre mostrado, se actualiza o se crea una nueva.
Para obtener información sobre la configuración de OAuth para los demás conectores de fábrica, consulte el Centro de ayuda de ThingWorx.
Para obtener más información, consulte el tema Implementación de conectores.
Después de que la herramienta completa correctamente la implementación, las nuevas instancias de OAuths están disponibles.