重要
此功能目前以公共预览版提供。
本页演示如何使用 OAuth“代表”身份验证将 AI 代理 与 Microsoft Teams 集成。 通过此集成,Databricks 代理可以通过 Microsoft Teams 与用户交互,同时保持对 Databricks 资源的安全用户委托访问权限。
概述
将 Databricks 代理连接到 Microsoft Teams 需要跨三个平台进行协调:Databricks、Azure 和 Microsoft Teams。 概括而言,完成以下步骤:
- 在 Databricks 中创建代理:生成 AI 代理并将其部署到服务终结点。
- 配置 Azure 资源:设置 Azure 机器人服务、Azure 应用服务并配置 OAuth 身份验证设置。
- 创建 OAuth 联合策略:在 Microsoft Entra ID 和 Databricks 之间启用安全令牌交换。
- 部署机器人代码:部署将 Teams 连接到 Databricks 代理的应用程序代码。
- 测试集成:验证用户是否可以通过 Teams 对代理进行身份验证和交互。
要求
在开始之前,请验证你是否具有:
- 用于创建 Unity 目录连接和部署代理的工作区管理员权限
- 对 Azure 订阅的访问权限,可在其中创建资源
- 用于创建 OAuth 联合策略的 Databricks 管理员权限
- 访问用于测试的 Microsoft Teams 工作区
步骤 1. 在 Databricks 中创建 AI 代理
在 Databricks 中创建处理来自 Microsoft Teams 的查询的 AI 代理。 此代理充当聊天机器人的核心智能并处理以下任务:
- 处理 Teams 中的用户查询
- 与 Databricks 服务交互,以便进行数据检索和计算
- 将相关响应返回到 Teams 界面
若要创建代理,请参阅 代码中的 Author AI 代理。 创建代理后, 将其部署到服务终结点。
请注意服务终结点 URL,因为在配置 Azure Web 应用程序环境变量时需要它。
步骤 2. 配置 Azure 资源
集成需要特定的 Azure 资源来支持身份验证和部署 Teams 机器人组件。
创建以下 Azure 资源以支持 Teams 机器人集成。 所有资源必须位于同一 Azure 区域中。
注释
在创建这些资源时保存Microsoft应用 ID、应用租户 ID 和客户端密码,因为稍后的配置步骤需要这些资源。
创建资源组
导航到 Azure 门户。
单击“ 创建资源”。
搜索 资源组 并选择它。
重要
创建的所有 Azure 资源都必须与资源组位于同一区域。
配置资源组:
- 选择自己的 Azure 订阅。
- 为资源组输入名称。
- 选择 Azure 区域(例如美国东部)。
- 单击“ 审阅 + 创建”,然后单击“ 创建”。
创建应用服务计划
- 在 Azure 门户中,单击“ 创建资源”。
- 搜索 应用服务计划 并选择它。
配置应用服务计划:
- 选择自己的 Azure 订阅。
- 选择创建的资源组。
- 输入应用服务计划的名称。
- 选择 Linux 作为作系统。
- 选择你的资源组所在的区域。
- 对于 定价计划,请选择 “基本 B1”。
- 单击“ 审阅 + 创建”,然后单击“ 创建”。
创建 Web 应用
- 在 Azure 门户中,单击“ 创建资源”。
- 搜索 Web 应用 并选择它。
配置 Web 应用:
- 选择自己的 Azure 订阅。
- 选择创建的资源组。
- 输入 Web 应用的名称。
- 将发布设置为代码。
- 选择 Python 3.13 作为运行时堆栈。
- 选择与其他资源相同的 Azure 区域。
- 将“安全唯一默认主机名”打开。
- 单击“ 审阅 + 创建”,然后单击“ 创建”。
创建 Azure 机器人
- 在 Azure 门户中,单击“ 创建资源”。
- 搜索 Azure 机器人 并选择它。
配置 Azure 机器人:
- 输入聊天机器人的句柄(名称)。
- 选择自己的 Azure 订阅。
- 选择创建的资源组。
- 设置数据驻留为全局。
- 将 定价计划 设置为 免费。
- 将应用类型设置为单租户。
- 设置 创建类型 为 创建新的 Microsoft 应用 ID。
- 将 服务管理引用 留空。
- 单击“ 审阅 + 创建”,然后单击“ 创建”。
创建 Azure 机器人后,配置其设置:
导航到 Azure Bot 资源。
在“设置”下,选择“配置”。
将 消息传送终结点 设置为
https://<your-webapp-name>.azurewebsites.net/api/messages.将
<your-webapp-name>替换为您的 Web 应用名称。 可以通过检查 Web 应用资源中的默认域来确认 URL。单击“应用”。
复制并保存 Microsoft应用 ID 和 应用租户 ID。
在Microsoft应用标识旁边,单击管理密码。
单击“ 新建客户端密码 ”创建新的客户端密码。
复制并保存客户端机密值。 离开页面后,无法再次查看此值。
重要
导航到页面时,会看到现有的客户端密码,但必须为此集成创建新的客户端密码。
配置 Microsoft Teams 频道
- 在 Azure 机器人资源中的 “频道”下,选择 “Microsoft Teams”。
- 接受服务条款。
完成这些步骤后,已创建并配置以下资源:
- 资源组:相关 Azure 资源的逻辑容器
- 应用服务计划:用于定义应用程序运行方式的计算资源的配置
- Web 应用程序:托管机器人代码
- Azure 机器人:支持通道激活以与机器人交互的服务
- Azure 应用程序:管理身份验证配置,包括客户端机密、密钥、范围和令牌
为 OAuth 配置 Azure 应用程序
将 Azure 应用程序配置为代表用户启用 OAuth 2.0 身份验证。
- 在 Azure 门户中,导航到机器人的 Azure 应用程序。
在 “身份验证 ”部分中,添加重定向 URL:
单击“ 添加平台>Web”。
添加重定向 URI:
https://token.botframework.com/.auth/web/redirect单击“ 配置”。
在 “令牌配置 ”部分中,为访问令牌添加可选声明:
- 单击“ 添加可选声明>访问令牌”。
- 搜索并选择
preferred_username声明。
在 “公开 API ”部分中,创建一个范围:
将 应用程序 ID URI 设置为
api://<app_id>(使用应用程序/客户端 ID)。单击“ 保存>添加范围”。
配置范围:
-
范围名称:
access_as_user - 谁可以同意:管理员和用户
- 管理员同意显示名称:以登录用户身份访问 API
- 管理员同意说明:允许应用程序以用户身份访问 API
- 用户许可显示名称:以您的身份访问 API
- 用户同意说明:允许应用程序以您的身份访问 API
-
范围名称:
在 “API 权限 ”部分中,添加Microsoft Graph 权限:
- 单击添加权限>Microsoft Graph>委派权限。
- 选择
email、openid和profile权限。
在 “清单 ”部分中,验证访问令牌版本:
- 在
api清单 JSON 中找到密钥。 - 确保
requestedAccessTokenVersion已设置为2. 如果不是,请将其更改为2并保存。
配置 Azure 机器人 OAuth 连接
在 Azure 机器人资源中配置 OAuth 连接:
在 Azure 机器人中,导航到 “设置>配置>添加 OAuth 连接设置”。
配置连接:
- 名称:选择描述性名称(在 Web 应用配置中使用此名称)
- 服务提供商:Azure Active Directory v2
- 客户端 ID:Azure 机器人应用程序/客户端 ID
- 客户端密码:为应用程序创建的机密
- 租户 ID:组织的租户 ID
-
范围:
api://<app_id>/access_as_user(使用 Azure 应用程序/客户端 ID)
单击“ 保存”。
为代理集成配置 Web 应用程序
为 Databricks 代理集成配置 Web 应用程序环境变量和启动命令:
- 导航到 Web 应用程序中 的设置>环境变量 。
- 添加以下 Databricks 代理变量:
| 变量名称 | 价值 | Description |
|---|---|---|
ConnectionName |
<oauth_connection_name> |
在 Azure 机器人中创建的 OAuth 连接的名称 |
DATABRICKS_HOST |
<databricks_workspace_url> |
运行代理终结点的 Databricks 工作区的 URL(例如 https://adb-1234567890123456.7.azuredatabricks.net) |
MicrosoftAppID |
<microsoft_app_id> |
Azure 机器人的客户端 ID/应用程序 ID(之前保存的) |
MicrosoftAppPassword |
<client_secret> |
为应用程序创建的客户端密码(之前保存) |
MicrosoftAppType |
singletenant |
应用程序类型 |
MicrosoftTenantId |
<tenant_id> |
组织的租户 ID (之前保存) |
SERVING_ENDPOINT_NAME |
<endpoint_name> |
Databricks 工作区中运行的服务终结点的名称 |
SCM_DO_BUILD_DURING_DEPLOYMENT |
True |
在部署期间安装和生成依赖项 |
WEBSITE_HTTPLOGGING_RETENTION_DAYS |
3 |
将日志保留 3 天 |
- 单击“ 保存”。
- 导航到 “设置>配置”。
- 将 Startup 命令 设置为:
python3 app.py - 单击“ 保存”。
注释
启动命令 python3 app.py 被配置为与您在后续步骤中部署的 Databricks 代理机器人代码配合使用。 这不同于可能使用不同的启动命令的其他 Azure 机器人配置。
步骤 3. 在 Databricks 中创建 OAuth 联合策略
创建 OAuth 联合策略,以便在 Microsoft Teams 和 Databricks 之间启用安全“代表用户”身份验证。 此策略允许在 Microsoft Entra ID 和 Databricks REST API 之间交换令牌。
有关联合策略的详细信息,请参阅:
注释
必须是 Databricks 管理员才能创建联合策略。
使用 Databricks CLI 创建联合策略
使用 Databricks 帐户 ID 登录到 Databricks 帐户控制台:
databricks auth login --host https://accounts.azuredatabricks.net/ --account-id <your_databricks_account_id>创建使用 Azure 应用程序的
app_id和tenant_id的联合政策:databricks account federation-policy create --json '{ "oidc_policy": { "issuer": "https://login.microsoftonline.com/<tenant_id>/v2.0", "audiences": [ "<app_id>" ], "subject_claim": "preferred_username" } }'
创建联合策略后,可以为 Databricks 令牌交换Microsoft Entra ID 令牌,该令牌允许代表用户向 Databricks API 发出经过身份验证的请求。
步骤 4. 将机器人代码部署到 Azure Web 应用
将机器人应用程序代码部署到 Azure Web 应用程序以完成集成。
克隆机器人存储库
克隆包含管理 OAuth 流身份验证、Databricks 令牌交换和代理交互的机器人代码的存储库:
git clone https://github.com/databricks-solutions/teams-databricks-bot-service.git
安装 Azure CLI
为平台安装 Azure CLI:
- Windows: 在 Windows 上安装 Azure CLI
- macOS: 在 macOS 上安装 Azure CLI
- Linux: 在 Linux 上安装 Azure CLI
部署应用程序
登录到 Azure 帐户:
az login此时会打开 Web 浏览器进行身份验证。 选择用于创建 Azure 资源的同一订阅。
在终端中,导航到克隆存储库的 teams-bot 文件夹:
cd databricks-bot-service/teams-bot/将机器人代码部署到 Web 应用程序:
az webapp up --resource-group <resource_group> --name <web_app_name> --runtime "PYTHON:3.13" --sku B1将
<resource_group>替换为您的 Azure 资源组名称,将<web_app_name>替换为您的 Web 应用名称。生成和启动过程需要几分钟时间。 该过程完成后,会看到 JSON 输出,其中包含有关应用和上传的源代码的信息。
步骤 5. 测试机器人
使用 Azure 机器人服务 Web Chat 测试机器人集成:
- 导航到 Azure 机器人资源中的设置>在网页聊天中测试。
- 键入“Hello”以查看登录按钮。
- 登录后,会看到消息“你现在已登录”。
- 提出与聊天机器人领域相关的问题。 机器人从 Databricks 代理返回答案。