创建身份验证
ThingWorx Flow 可以处理任何身份验证架构。对于 OAuth,它拥有更为简单的处理机制,通过配置即可进行设置。其他任何身份验证都属于连接分类,并且必须由连接器开发人员在通过连接对象与服务建立连接时进行编码。
大多数服务需要某种形式的身份验证。您可以使用 add connection 和 add OAuth 命令来添加身份验证机制。ThingWorx Flow CLI 和 ThingWorx Flow 服务器支持 OAuth 2.0 和 OAuth 1.0 身份验证。
常用的身份验证方法如下面的列表所述:
基本身份验证 - HTTP 协议内置的简单身份验证模式。您需要在发出请求时提供用户名和密码。
API 密钥身份验证 - 允许您访问数据。例如,此机制涉及将密钥值对作为查询字符串参数或标题发送。
基于 OAuth 的身份验证 - 基于令牌的身份验证方法,允许任何外部服务使用您的帐户信息,同时无需暴露密码。例如,您可以通过登录帐户来访问服务资源。
例如,Windchill 使用基本身份验证和 OAuth 身份验证。
创建 OAuth
要创建 OAuth,请执行以下操作:
1. 在命令提示符处执行以下命令:
a. cd <user project root directory>
b. flow add oauth <oauth name>
* 
OAuth 名称不能包含除连字符 (-) 之外的任何特殊字符。例如,OAuth 名称可以是 connector name-oauth name。
下列选项适用于 OAuth 命令:
选项
说明
数据类型
--version
显示版本号。
[布尔型]
--help
显示帮助。
[布尔型]
--parentDir, -d
项目的父项目录。
[默认:"."]
--logLevel, -1
设置日志级别。
[默认:"info"]
--useV1
指示使用该 OAuth 版本 1 配置。
[默认:false]
<projectDir>/auth/oauth/ 中创建了一个名为 <connector name-oauth name> 的新文件夹,其中包含 config.json 文件。
例如,如果在工作流中使用与 Gmail 相关的操作,则首先需要登录 Gmail 帐户,并随后授权 ThingWorx Flow 工作流代表您执行某些任务,如下图所示。
config.json 文件中设置上图中所示的访问参数。已完成的 config.json 文件如下所示:
{
"_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 将由 Flow 服务器根据 deploymentConfig.json 文件中的值自动执行。
表格列出了各种重要字段和 config.json 文件的重要性。
config.json 文件属性
属性
说明
base_url
基本 URL。有关详细信息,请参阅标识提供工具 (IdP) 文档。
oauth_type
请勿编辑此属性。
默认情况下,CLI 将生成 OAuth2 配置。要生成 OAuth1 配置,请使用 –useV1 选项。
oauth2_params_scope
由应用程序定义的范围,用于确定可以在系统上执行何种操作。令牌将具有用户授予应用程序访问权限的范围。
oauth2_auth_url
为应用程序生成用户名和密码提示的屏幕。
此值可以为绝对 URL,也可以为基本 URL 的相对 URL。
oauth2_auth_query
向身份验证 URL 发出请求时,IdP 所需的参数。
oauth2_token_url
用于请求访问令牌或刷新令牌。此值可以为绝对 URL,也可以为基本 URL 的相对 URL。
oauth2_token_data
包含需要发送到 oauth2_token_url 的数据。
oauth2_refresh_url
生成刷新令牌。某些 IdP 使用与令牌 URL 相同的 URL 来请求刷新令牌。
oauth2_refresh_data
包含需要发送到 oauth2_refresh_url 的数据。
oauth2_validate_url
验证令牌
oauth2_validate_headers
在请求中发送到 oauth2_validate_url 的标题。
oauth2_validate_method
使用 HTTP 方法进行验证请求。
配置文件包含 ThingWorx Flow 用于执行各种 OAuth2 操作的信息。
属性值为字符串数组,因此需要转义。这些值可以为常量值,不过您也可以利用文本替换。env_local_paramsenv_staging_paramsenv_production_params 能够根据部署改变各种参数的值。
config.json 文件中信息的重要部分是 client_idclient_secret
有关部署连接器的信息,请参阅 部署部分。
OAuth 配置不应包含敏感信息或租户特定的信息。其中包括 client_id 和 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": [],
"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}\"}"
],
如果信息不是特定于部署的,则不应以部署名称作为前缀,例如本地或开发。
有关创建使用 Google API 的应用程序的帮助,请参阅 API 控制台帮助。有关任何其他应用程序,请参阅 IdP 或系统文档。
有关创建 OAuth 配置的详细信息,请参阅 附录 B
为默认提供的连接器配置 OAuth
ThingWorx Flow 附带有大量需要 OAuth 执行授权的连接器。第一步是创建 OAuth 加载文件。您可以选择启用全部或部分 OAuth 配置。OAuth 加载文件具有以下格式:
{
"onedrive": {
"OneDrive": {
"CLIENT_ID": "<client-id-here>"
"CLIENT_SECRET": "<client-secret-here>"
}
}
"trello": {
"Trello": {
"CONSUMER_KEY":"<consumer-key-here>",
"CONSUMER_SECRET":"<consumer-secret-here>"
}
}
}
在上述文件中,顶层键为连接器的名称。OneDrive 是 OAuth2 配置和 OAuth1 配置的一个示例。
请参阅 文档来获取每个连接器的 client-idclient-secret。OAuth 配置的显示名称位于下一层。这是在 OAuth2 下拉列表中显示为“添加 <显示名称> 登录”的文本。
使用 flow-deploy 工具将 OAuth 加载到系统。如果匹配的配置 (基于连接器和显示名称) 已存在,则会进行更新,否则将创建一个新配置。
有关为其他默认提供的连接器配置 OAuth 的信息,请参阅 ThingWorx 帮助中心
有关详细信息,请参阅 部署连接器主题。
该工具成功完成部署后,即可使用新的 OAuth。