## 1. 后台计划任务
设备通过后台的运行的 **任务计划程序（Task Scheduler）** > Task Schduler Library > Microsoft > Windows > Workplace Join > **Automatic-Device Join** 任务来寻找 **服务连接点（Service Connection Point - SCP）** 

>此计划任务的默认触发器规则为，任何用户登陆时都会触发一次（锁屏再次登录无效）。

![auto_device_join](/static/images/haadj_man/auto_device_join.png)

---
## 2. 寻找服务器连接点
### 2.1 **注册表路径** 中的 SCP
当上述计划任务启动后，设备尝试从注册表中检索 **租户 ID** 和已在 **Azure AD** 上 验证的域名 。

**注册表路径**: 
```cpp
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CDJ\AAD\]
```

上述注册表路径中的两个 String Value（REG\_SZ）的数据（Value）分别为 **TenantId** 以及 **TenantName**

>如果我们在 Azure AD 上没有做过自定义域名的验证的话，我们默认使用 \*.onmicrosoft.com 格式的 TenantName

>但如果我们有自定义域名的话，对于联合域（Federated Domain）请使用联合域的域名。托管域（Managed Domain）请使用对应的托管域的域名，或者初始的 \*.onmicrosoft.com 域名。

![scp_registry](/static/images/haadj_man/scp_registry.png)

**租户ID（TenantId）:**

![tenant_id](/static/images/haadj_man/tenant_id.png)

**已在 Azure AD 上验证的域名（TenantName）:**

![aad_domain](/static/images/haadj_man/aad_domain.png)

### 2.2 本地AD **配置分区** 中的 SCP
  如果以上尝试失败，设备将与本地AD **配置分区（Configuration Partition）**通信，从**服务连接点（SCP）**获取租户信息（使用 LDAP Query/Response）。您也可以使用 [设备注册疑难解答 PowerShell 工具](https://docs.microsoft.com/zh-cn/samples/azure-samples/dsregtool/dsregtool/) 获取 SCP 信息。

#### **2.2.1 通过使用 ADSI 编辑器（ADSI Edit）中的 配置分区 查看/编辑 SCP**

首先，打开 **ADSI Edit** > 展开 操作（Action）> 连接到...（Connect to...）（此操作的目的为选择 LDAP 路径）

![](/static/images/haadj_man/adsi_connect.png)

在 连接设置的窗口中 > 连接点 > 选择一个已知命名上下文 > 配置（Configuration）

![](/static/images/haadj_man/adsi_configuration.png)

展开左侧 配置 > CN=Configuration,DC=domain name,DC=domain suffix > CN=Services > CN=Device Registration Configuration > 右击 **CN=62a0ff2e-97b9-4513-943f-0d221bd30080 >** 属性

![](/static/images/haadj_man/adsi_drs_properties.png)

在 **属性编辑器** 选项卡中，找到名为 **keywords** 的属性，双击打开（这就是我们配置在本地AD中的 SCP，我们也可以通过编辑 **azureADId** [TenantId] 以及 **azureADName** [TenantName] 来修改 SCP 的配置）。

![](/static/images/haadj_man/adsi_drs_keywords.png)

---
## 3. 设备终结点通信以及证书签发
### 3.1 设备终结点通信
设备将尝试在 **系统上下文（System Context）** 与 **Microsoft 资源终结点 （EndPoints）** 进行通信。 您可以使用 [测试设备注册连接 PowerShell 脚本](https://docs.microsoft.com/zh-cn/samples/azure-samples/testdeviceregconnectivity/testdeviceregconnectivity/) 验证设备是否可以访问系统帐户下的 Microsoft 终结点。

> DRS服务相关的 **Microsoft 终结点** 如下:
```md
https://enterpriseregistration.windows.net
https://login.microsoftonline.com
https://device.login.microsoftonline.com
```
> 对于联合域，还要额外确保 **[联合域（e.g. sts.rayakicorp.com）](https://sts.rayakicorp.com)** 的验证服务畅通:

### 3.1 设备自签证书签发
当设备找寻完毕 SCP，并且测试访问 Microsoft资源成功后，Azure AD DRS 服务会给设备签发一张 **设备证书** （储存在本地计算机账户下的 personal 目录里，有效期10年）。

![device_cert](/static/images/haadj_man/device_cert.png)

>设备会存储这张证书的 **私钥**（拥有TPM芯片的设备，会将私钥存储在TPM中）

![device_cert_private](/static/images/haadj_man/device_cert_private.png)

设备证书的 **公钥证书** 会通过 LDAP 协议，从设备写回本地AD，存储在设备自身的属性 ***userCertificate*** 中，并且通过 AAD Connect 同步至 Azure AD 的 ***cloudUserCertificate***

![device_metaverse](/static/images/haadj_man/device_metaverse.png)

>[点我查看 *userCertificate* 属性里的这张公钥证书](https://blog.rayakicorp.com/posts/13/)

---
## 4. 混合设备注册完毕
之后设备使用生成的 **设备证书** 针对 **Azure AD** 或 **联合服务（例如 ADFS）** 进行身份验证。

设备注册过程完成。