为流式传输SDK连接器配置身份验证

使用流式传输SDK构建的所有连接器都需要身份验证。 在提交或释放连接器之前,请配置​一个受支持的身份验证机制

机制
使用时机
OAuth 2.0
连接器使用Adobe凭据、范围或客户授权来访问Adobe API。
HMAC
连接器在将数据发送到流式引入API之前,会使用共享密钥对每个事件进行签名。

配置与连接器的集成模型匹配的机制。

IMPORTANT
您必须为连接器配置OAuth 2.0或基于HMAC的身份验证。 如果没有配置的身份验证机制,Adobe不接受用于提交或发布的流SDK连接器。

开始之前

确保您拥有:

  • 已完成的流SDK连接器实施。
  • 暂存或测试流摄取API端点。
  • 测试Adobe组织和沙盒。
  • 测试事件有效负载。
  • 安全存储和轮换凭据的计划。
  • 一种无需公开密钥即可捕获请求和响应详细信息的方法。

其他OAuth要求

如果您使用OAuth 2.0,请确保您拥有:

  • 访问Adobe Developer Console。
  • 连接器所需的API或产品配置文件。
  • 所选凭据的客户端ID和客户端密码。
  • 所需的范围。
  • 连接器所需的OAuth流程和令牌端点。

有关适当的Adobe凭据类型和实施详细信息,请参阅:

IMPORTANT
在创建凭据之前,确认您的连接器是使用Adobe管理身份验证还是OAuth服务器到服务器身份验证。 这些流程具有不同的设置和同意要求。

其他HMAC要求

如果您使用HMAC,请确保您具有:

  • 为webhook或连接器配置的共享密钥。
  • 用于存储密码的安全位置。
  • 可计算HMAC-SHA256签名的代码。
  • 将发送到Adobe的确切序列化事件正文。
  • 有效、无效、缺少和已轮换密码的测试过程。

配置OAuth 2.0

​1. 创建或选择Adobe凭据

首先,您必须创建或选择连接器所需的Adobe Developer Console凭据。

配置:

  • 凭据类型。
  • 所需的Adobe API或产品配置文件。
  • 所需的范围。
  • 重定向或同意设置(如果适用于选定的OAuth流)。

不要使用连接器的集成模型不支持的凭据类型。

​2. 安全地存储OAuth配置

安全地存储以下值:

  • 客户端ID。
  • 客户端密码。
  • 所需的范围。
  • 令牌端点。
  • 任何连接器特定的租户、组织或环境值。

请勿将客户端密钥提交到源代码管理,或将其包含在日志、错误消息、屏幕截图或测试结果中。

​3. 将OAuth配置添加到连接器

将OAuth配置值存储在连接器自己的配置或服务中。 流式传输SDK不会为此身份验证步骤定义连接规范字段,因为它控制您的连接器如何调用流式传输API,而不是Experience Platform如何连接到您的源。

连接器的配置必须包括:

  • 身份验证类型。
  • 客户端ID。
  • 客户端密码。
  • 范围。
  • 令牌端点。
  • 您的凭据类型所需的任何其他租户或组织值。

​4. 获取访问令牌

实施为凭据类型记录的OAuth流程。

连接器必须:

  1. 使用配置的OAuth凭据进行身份验证。
  2. 请求流SDK集成所需的范围。
  3. 将访问令牌存储在内存或其他安全位置。
  4. 根据令牌生命周期刷新或重新获取令牌。
  5. 避免记录令牌或客户端密码。

​5. 将访问令牌添加到请求

在连接器发送的请求中包含访问令牌作为持有者令牌:

Authorization: Bearer {ACCESS_TOKEN}

对所有请求使用HTTPS。

​6. 处理令牌故障

连接器应检测并处理身份验证失败,包括:

  • 缺少访问令牌。
  • 访问令牌已过期。
  • 客户端凭据无效。
  • 范围不足。
  • 已吊销或禁用的凭据。

令牌过期时,请使用文档记录的OAuth流程获取新令牌,并仅在操作可安全重试时重试。

配置基于HMAC的身份验证

​1. 配置共享密钥

创建或获取连接器所需的共享密钥,并在连接器或webhook设置中对其进行配置。

密码必须是:

  • 安全存储。
  • 在运行时对签名代码可用。
  • 从源代码控制和日志中排除。
  • 已根据您的安全策略轮换。

​2. 序列化事件

在计算签名之前序列化事件。

必须使用连接器在请求正文中发送的同一序列化消息计算签名。

serializedMessage = serialize(event)

请勿根据事件的一种表示形式计算签名,而发送另一种表示形式。 更改空格、属性顺序、转义、编码或行结尾可能会导致签名验证失败。

​3. 计算HMAC-SHA256签名

使用以下方式计算HMAC-SHA256值:

  • 密钥:配置的共享密钥。
  • 消息:序列化的请求正文。
signature = HMAC-SHA256(secret, serializedMessage)

​4. 添加HMAC标头

将计算的签名作为x-hmac-sha256标头添加到请求中:

POST <streaming-ingestion-endpoint>
Content-Type: application/json
x-hmac-sha256: {CALCULATED_SIGNATURE}

<serialized-message>

例如,标头解析为一个与以下内容类似的值:

{
  "x-hmac-sha256": "5f2c8b7e0d9c3a4e6b1f2d3c4a5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3"
}

对于发送到Adobe的精确请求正文,标头值必须表示HMAC-SHA256计算。

​5. 发送请求

将签名的请求通过HTTPS发送到流式引入API端点。

流式引入API在处理事件之前验证签名。 拒绝签名缺失或无效的请求。

​6. 安全地旋转密码

旋转密码时,请遵循以下顺序:

  1. 在凭据管理系统中创建新密钥。
  2. 如果支持重叠密码,则在部署新密码时保持现有密码有效。
  3. 使用新密码更新连接器配置。
  4. 部署或保存配置。
  5. 发送测试请求并验证验证是否成功。
  6. 监视身份验证失败,然后在所有连接器实例使用新密钥后撤销旧密钥。

验证连接器

在成功和不成功的验证情况下测试连接器。

OAuth测试方案
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2
测试 预期结果
使用有效的访问令牌请求 接受并处理该事件。
无访问令牌的请求 请求被拒绝。
使用过期访问令牌的请求 请求被拒绝,或连接器获取新令牌并根据其重试策略重试。
使用无效访问令牌的请求 请求被拒绝。
请求范围不足 请求被拒绝。
凭据轮换后请求 连接器已成功获取和使用新凭据。
HMAC测试方案
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2
测试 预期结果
具有有效签名和当前密码的请求 接受并处理该事件。
请求不包含x-hmac-sha256 请求被拒绝。
签名无效的请求 请求被拒绝。
使用错误密码签名的请求 请求被拒绝。
生成签名后修改了请求正文 请求被拒绝。
在轮换期间使用有效的先前密码签名的请求 结果遵循记录的密钥轮换行为。
使用已删除的密码签名的请求 请求被拒绝。

请为每个测试记录以下内容:

  • 请求方法和端点。
  • 请求标头,其中已密文密钥和令牌。
  • 序列化请求正文。
  • 使用的身份验证机制。
  • 响应状态和正文。
  • 时间戳和关联或跟踪标识符(如果可用)。
  • 事件是否已成功摄取。

故障排除

OAuth身份验证失败

检查以下各项:

  • 已为正确的Adobe组织和环境生成访问令牌。
  • 客户端ID和客户端密钥属于配置的凭据。
  • 请求的范围正确。
  • 访问令牌未过期。
  • 使用授权:持有者方案发送令牌。
  • 连接器正在使用正确的令牌端点。
  • 凭据有权访问所需的API或产品配置文件。

HMAC验证失败

检查以下各项:

  • x-hmac-sha256标头存在。
  • 标头名称和值的拼写正确。
  • 连接器使用了正确的密码。
  • 签名使用HMAC-SHA256计算。
  • 签名是在准确的序列化请求正文中计算的。
  • 在计算签名后,不会重新设置请求正文的格式。
  • 必需的签名编码和信件大小写正确。
  • 连接器在旋转过程中使用正确的当前密码或上一个密码。
  • 密码可供运行时使用,且尚未被截断或更改。

提交要求

在提交或释放连接器之前,请确认以下事项:

  • 您的连接器会对流摄取API的每个请求使用OAuth 2.0或基于HMAC的身份验证。
  • 您已在中测试方案验证连接器并记录结果。
  • 您的连接器会拒绝未经身份验证和身份验证不正确的请求。
  • 您的密钥和令牌不会提交到源代码控制、日志、错误消息或屏幕截图。

后续步骤

配置身份验证并进行验证后,继续测试并提交源。 要了解如何记录源的身份验证要求,请参阅记录源(流SDK)

recommendation-more-help
experience-platform-help-sources