应用程序密钥
应用程序密钥是在 ThingWorx 数据库中加密的安全标记,可用于登录 ThingWorx 应用程序,而无需使用标准凭据。
您可以在请求的 URL 标题上传递应用程序密钥令牌。该请求通过与应用程序密钥关联的用户安全上下文运行。默认情况下,使用应用程序密钥发出请求时不会创建会话。这是其他系统和应用程序向 ThingWorx 应用程序发出请求的推荐方式。但是,如果您希望创建会话,除了传入应用程序密钥令牌之外,还可以使用以下查询参数:x-thingworx-session=true
通过 URL 查看混搭并使用应用程序密钥时,应通过添加 x-thingworx-session=true 来创建会话。如果没有会话,则后续请求需要使用标准 HTTP 基本身份验证器进行身份验证。x-thingworx-session=true 查询参数之后包含 #mashup=[your mashup name]
* 
在创建应用程序密钥以及为其分配权限时,您应始终使用最低权限的安全概念。这不是向应用程序密钥分配管理员组成员的最佳做法。如果您尝试基于具有管理员权限的用户创建应用程序密钥,则将显示一条警告。
应用程序密钥属性
属性名称
说明
名称
标识此密钥的字或短语。必填字段。
头像
一种可以上载并以可视方式表示应用程序密钥的图像。
说明
应用程序密钥说明。
项目
与此密钥关联的工作或组。
标记
可用于对应用程序密钥进行分组或分类的模型标记。
IP 允许列表
允许使用应用程序密钥访问 ThingWorx 的 IP 列表。使用逗号分隔各 IP。如果留空,则任何 IP 均可使用应用程序密钥。
客户端名称
可表示任何内容 (例如与应用程序密钥或 IP 地址关联的客户端) 的用户可定义字段。ThingWorx 会忽略分配给此字段的所有值。
用户名引用
与应用程序密钥关联的用户名。必填字段。
密钥 ID
ThingWorx 生成的密钥值。密钥 ID 不可编辑。
* 
密钥 ID 以加密方式存储在数据库中。用于对值进行加密的对称密钥存储在 /ThingworxStorage/keystore.jks,密钥库密码存储在 /ThingworxPlatform/keystore-password。如果这些文件不存在,则系统将生成这些文件。如果对称密钥不存在,则会在系统启动之前创建一个对称密钥。如果您正在安装和维护 ThingWorx 服务器,请确保保留这些文件。如果文件丢失,则应用程序密钥将不起作用,这意味着值在系统启动过程中无法加密,并且现有应用程序密钥也无法再保存或用于身份验证。
到期日期
应用程序密钥的到期日期。如果未指定到期日期,则使用用户管理子系统中的默认值。如果未指定到期日期或用户管理子系统中的“应用程序密钥有效期 (秒)”值未更改,则应用程序密钥将在创建 24 小时后过期。
上次修改日期
最后一次修改应用程序密钥的日期和时间。
主混搭
与应用程序密钥关联的默认混搭。
文档
可选注释和背景信息,用于说明如何在环境中使用此功能的方式和原因。
创建应用程序密钥
要创建应用程序密钥,请遵循以下步骤。创建的密钥将采用“用户名引用”字段中授予关联用户的安全设置。
1. ThingWorx Composer 中,单击“新建”
2. 向下滚动并选择“应用程序密钥”
3. 键入一个“名称”
4. 可根据需要为此密钥选择或输入“说明”“项目”“标记”
5. “用户名引用”字段中,选择与应用程序密钥关联的用户。
6. 填充任何需要的可选字段,包括“IP 允许列表”“客户端名称”“主混搭”“头像”“到期日期”“文档”
* 
如果未设置“到期日期”,则值将根据应用程序密钥实体的创建日期和用户管理子系统中的“应用程序密钥有效期 (秒)”设置进行计算。
7. 单击“保存”
8. 应用程序密钥显示在“密钥 ID”字段中。
删除应用程序密钥
虽然可以指定应用程序密钥的到期日期,但其失效时不会自动删除。您可以写入 ThingWorx 应用程序逻辑,以进行周期性迭代和删除失效的应用程序密钥。请参阅应用程序密钥服务。要手动删除应用程序密钥:
1. 在 Composer 中,浏览全部内容。
2. 向下滚动到“安全”部分。
3. 如有必要,可展开该部分,并定位“应用程序密钥”
4. 通过单击名称左侧的复选框选择一个应用程序密钥。
5. 单击“删除”按钮。
通过服务创建应用程序密钥
要通过服务创建应用程序密钥,请使用下面的示例:
var params = {
clientName: undefined /* STRING */,
name: undefined /* STRING */,
description: undefined /* STRING */,
project: undefined /* STRING */,
whitelist: undefined /* STRING */,
user: undefined /* USERNAME */,
tags: undefined /* TAGS */,
expirationDate: undefined /* DATETIME */
};
// no return
Resources["EntityServices"].CreateApplicationKey(params);
//Get the generated Key's actual appKey value
var KeyID = ApplicationKeys["YOURKEYNAME"].GetKeyID();
* 
如果未设置“到期日期”,则值将根据应用程序密钥实体的创建日期和用户管理子系统中的“应用程序密钥有效期 (秒)”设置进行计算。
初始应用程序密钥设置和初次连接的最佳做法
应尽可能使设备始终在开发沙盒中保持联机状态或进行模拟。一旦设备准备好生产,即应为应用程序边缘网络上的每个设备创建新的应用程序密钥。在创建了一个唯一的应用程序密钥并将其部署到相关设备后,应在初始化该设备时对其进行监控,以确认它是否已成功连接到该平台。
应用程序密钥到期和旋转
作为最佳做法,应用程序密钥应具有有限的到期日期,该日期与将使用应用程序密钥凭据的设备的预期生命周期相匹配。此外,不建议对多个设备使用相同的应用程序密钥,尤其是在这些设备的生命周期不同时。应用程序密钥到期后,应在设备上安装新的应用程序密钥。
关键应用程序的应用程序密钥到期
如果不存在将新的应用程序密钥交付到设备的系统,则可以更新应用程序密钥上的到期密钥,以延长使用期限。这并非推荐的最佳做法,但可用作关键业务数据可能丢失时的解决方法。请务必注意,延长应用程序密钥的生命周期时,如果超出了设备的预计生命周期,则可能会对关键应用程序基础结构造成安全威胁。
相关链接
这对您有帮助吗?