本页内容
本页内容
主流消息传递
Microsoft Teams认证
Teams 机器人的联合身份验证,以及它如何与客户端密钥进行比较。
联邦认证(证书 + 托管标识)
对于生产环境,OpenClaw 通过 channels.msteams.authType: "federated" 支持联邦认证,作为客户端密钥的替代方案。两种方法:
选项 A:基于证书的认证
使用通过 Entra ID 应用程序注册注册的 PEM 证书。
设置:
- 生成或获取证书(包含私钥的 PEM 格式)。
- Entra ID → 应用注册 → 证书和密码 → 证书 → 上传公钥证书。
配置:
环境变量:
MSTEAMS_AUTH_TYPE=federatedMSTEAMS_CERTIFICATE_PATH=/path/to/cert.pem
选项 B:Azure 托管标识
使用 Azure 托管标识在 Azure 基础结构(AKS、应用服务、Azure VM)上进行无密码身份验证。
工作方式:
- bot pod/VM 具有托管标识(系统分配或用户分配)。
- 联邦身份凭据将托管标识链接到 Entra ID 应用注册。
- 运行时,OpenClaw 使用
@azure/identity从 Azure IMDS 端点获取令牌。 - 该令牌会传递给 Teams SDK,用于 bot 认证。
前置条件:
- 启用了托管标识的 Azure 基础设施(AKS 工作负载标识、App Service、VM)。
- 已在 Entra ID 应用注册上创建联邦身份凭据。
- 从pod/VM.网络访问IMDS(
169.254.169.254:80)
配置(系统分配托管标识):
配置(用户分配托管标识): 在上面的配置块中添加 managedIdentityClientId: "<MI_CLIENT_ID>"。
环境变量:
MSTEAMS_AUTH_TYPE=federatedMSTEAMS_USE_MANAGED_IDENTITY=trueMSTEAMS_MANAGED_IDENTITY_CLIENT_ID=<client-id>(仅用户分配时)
AKS 工作负载标识设置
对于使用工作负载标识的 AKS 部署:
-
在你的 AKS 集群上启用工作负载标识。
-
在 Entra ID 应用注册上创建联邦身份凭据:
bash -
使用应用客户端 ID 为 Kubernetes service account 添加注解:
yaml -
为工作负载标识注入为 Pod 添加标签:
yaml -
允许网络访问到IMDS (
169.254.169.254):如果使用NetworkPolicy,请在端口80上添加169.254.169.254/32的出口规则。
认证类型对比
| 方法 | 配置 | 优点 | 缺点 |
|---|---|---|---|
| 客户端密钥 | appPassword |
设置简单 | 需要轮换密钥,安全性较低 |
| 证书 | authType: "federated" + certificatePath |
网络中不传共享密钥 | 需要管理证书 |
| 托管标识 | authType: "federated" + useManagedIdentity |
无密码,不需要管理密钥 | 需要 Azure 基础设施 |
certificateThumbprint 可以与 certificatePath 一起设置,但不会被身份验证路径读取;它被接受只是为了向前兼容。
默认值: 当未设置 authType 时,OpenClaw 使用客户端密钥认证(appPassword)。现有配置将保持不变,继续正常工作。
本页有帮助吗?