快速入门:使用 Java 服务 SDK 将 TPM 设备注册到 IoT 中心设备预配服务
在本快速入门中,你将借助示例 Java 应用程序,使用 Java 服务 SDK 以编程方式在 Azure IoT 中心设备预配服务中为模拟 TPM 设备创建单个注册。
先决条件
- 完成使用 Azure 门户设置 IoT 中心设备预配服务。
- 完成从 TPM 设备读取加密密钥。
- 具有活动订阅的 Azure 帐户。 创建试用版订阅。
- Java SE 开发工具包 8。 本快速入门将在下面安装 Java 服务 SDK。 它可以在 Windows 和 Linux 上运行。 本快速入门使用 Windows。
- Maven 3。
- Git。
准备开发环境
确保已在计算机上安装 Java SE 开发工具包 8。
设置 Java 安装的环境变量。
PATH
变量应包括 jdk1.8.x\bin 目录的完整路径。 如果这是计算机的首次 Java 安装,则请创建名为JAVA_HOME
的新的环境变量,将其指向 jdk1.8.x 目录的完整路径。 在 Windows 计算机上,该目录位于 C:\Program FilesJava 文件夹中。可以通过在 Windows 计算机的“控制面板”上搜索“编辑系统环境变量”来创建或编辑环境变量。可以在命令窗口中运行以下命令,查看 Java 是否已成功安装在计算机上:
java -version
将 Maven 3 下载并解压缩到计算机上。
编辑环境变量
PATH
,使之指向 Maven 解压缩时所在文件夹中的 apache-maven-3.x.x\bin 文件夹。 可以在命令窗口中运行以下命令,确认 Maven 已成功安装:mvn --version
确保在计算机上安装 git 并将其添加到环境变量
PATH
。
下载并修改 Java 示例代码
此部分演示如何向示例代码添加 TPM 设备的预配详细信息。
打开命令提示符。 使用 Java 服务 SDK 克隆设备注册代码示例的 GitHub 存储库:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
在下载的源代码中,导航到示例文件夹 azure-iot-sdk-java/provisioning/provisioning-samples/service-enrollment-sample 。 在所选编辑器中打开文件 /src/main/java/samples/com/microsoft/azure/sdk/iot/ServiceEnrollmentSample.java ,添加以下详细信息:
在门户中为预配服务添加
[Provisioning Connection String]
,如下所示:在 Azure 门户中导航到预配服务。
打开“共享访问策略”,选择具有 EnrollmentWrite 权限的策略。
复制“主密钥连接字符串” 。
在示例代码文件 ServiceEnrollmentSample.java 中,将
[Provisioning Connection String]
替换为“主密钥连接字符串”。private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
添加 TPM 设备详细信息:
获取 TPM 设备模拟的“注册 ID”和“TPM 认可密钥”, 只需执行模拟 TPM 设备部分之前的步骤即可。
使用前面步骤的输出中的“注册 ID” 和“认可密钥” ,替换示例代码文件 ServiceEnrollmentSample.java 中的
[RegistrationId]
和[TPM Endorsement Key]
:private static final String REGISTRATION_ID = "[RegistrationId]"; private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
也可选择通过示例代码配置预配服务:
若要将此配置添加到示例,请执行以下步骤:
- 在 Azure 门户中导航到已链接到预配服务的 IoT 中心。 打开中心的“概览”选项卡,复制“主机名”。 将该“主机名” 指定给 IOTHUB_HOST_NAME 参数。
private static final String IOTHUB_HOST_NAME = "[Host name].azure-devices.cn";
- 为 DEVICE_ID 参数指定一个友好名称,并保留 PROVISIONING_STATUS 的默认值 ENABLED。
- 在 Azure 门户中导航到已链接到预配服务的 IoT 中心。 打开中心的“概览”选项卡,复制“主机名”。 将该“主机名” 指定给 IOTHUB_HOST_NAME 参数。
或者,如果选择不配置预配服务,请确保注释掉或删除 ServiceEnrollmentSample.java 文件中的以下语句:
// The following parameters are optional. Remove it if you don't need. individualEnrollment.setDeviceId(DEVICE_ID); individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME); individualEnrollment.setProvisioningStatus(PROVISIONING_STATUS);
研究示例代码。 此代码用于创建、更新、查询和删除单个 TPM 设备注册。 若要验证是否已在门户中成功注册,请暂时性地注释掉 ServiceEnrollmentSample.java 文件末尾的以下代码行:
// *********************************** Delete info of individualEnrollment ************************************ System.out.println("\nDelete the individualEnrollment..."); provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
保存 ServiceEnrollmentSample.java 文件。
生成并运行 Java 示例代码
打开命令窗口,导航到文件夹 azure-iot-sdk-java/provisioning/provisioning-samples/service-enrollment-sample 。
使用以下命令生成示例代码:
mvn install -DskipTests
此命令将 Maven 包
com.microsoft.azure.sdk.iot.provisioning.service
下载到计算机。 此包包含编译示例代码所需的 Java 服务 SDK 的二进制文件。运行示例,方法是在命令窗口使用以下命令:
cd target java -jar ./service-enrollment-sample-{version}-with-deps.jar
在成功注册后观察输出窗口。
在 Azure 门户中导航到预配服务。 选择“管理注册”,然后选择“单个注册”选项卡 。请注意,现在列出了模拟 TPM 设备的“注册 ID”。
清理资源
如果打算学习 Java 服务示例,请勿清理本快速入门中创建的资源。 如果不打算继续学习,请按以下步骤删除本快速入门中创建的所有资源。
- 关闭计算机上的 Java 示例输出窗口。
- 关闭可能已创建的用于模拟 TPM 设备的 TPM 模拟器窗口。
- 在 Azure 门户中导航到你的设备预配服务,选择“管理注册”,然后选择“单个注册”选项卡。 选中通过本快速入门创建的注册项的“注册 ID”旁边的复选框,然后按窗格顶部的“删除”按钮 。
后续步骤
在本快速入门中,你将模拟的 TPM 设备注册到了设备预配服务。 若要深入了解设备预配,请继续学习本教程有关如何在 Azure 门户中进行设备预配服务设置的内容。