跳到主要内容

启用第三方 AI 代理访问你的应用

提示:

探索 Logto 的 AI 解决方案:为 MCP 服务器、AI 代理和应用提供认证 (Authentication) 与授权 (Authorization)。

本指南将带你完成将 Logto 集成到你的服务,并启用 AI 代理访问的流程。

你将学到如何:

  • 将 Logto 配置为你的服务的授权 (Authorization) 服务器。
  • 获取 AI 代理访问你的服务所需的访问令牌 (Access token)。
  • 使用 AI 代理测试整个流程。

第三方 AI 代理与你自己的 AI 代理(或应用)的区别

让我们来看一个例子。假设你是一名开发者,运营着一个提供天气数据的服务。

官方天气应用(你自己的 AI 代理 / 应用)

  • 你为用户提供了一个官方天气应用,用于查询天气。
  • 工作原理:官方天气应用通过 Logto 连接到你的服务进行用户认证 (Authentication)。当 Alice 登录时,她会自动获得天气数据的访问权限,无需额外的权限页面,因为这是你信任的应用。

第三方 AI 代理

  • 你正在围绕你的服务构建一个生态系统,因此另一位开发者创建了“WeatherBot”(一个可以提供天气更新和预报的 AI 助手),将其作为第三方 AI 代理集成。
  • 工作原理:WeatherBot(第三方 AI 代理)希望通过你的服务访问用户的天气数据。当 Alice 使用她的账户登录 WeatherBot 时:
    • 她会看到一个用户授权页面 (Consent screen),请求 WeatherBot 访问她的天气数据的权限。
    • Alice 可以允许或拒绝此访问。
    • 只有她同意的数据会被共享给 WeatherBot,WeatherBot 无法在没有明确重新授权的情况下访问任何额外数据。

这种访问(权限)控制确保了用户数据的安全,即使你的服务管理所有数据,像 WeatherBot 这样的第三方 AI 代理也只能访问用户明确允许的数据。他们无法绕过这个过程,因为这是由你在服务中实现的访问控制所强制执行的。

总结

客户端类型示例是否需要用户授权?谁控制?
官方天气应用你自己的天气应用你(开发者)
第三方 AI 代理WeatherBot 助手其他开发者
备注:

如果你想将你的服务与你自己的 AI 代理或应用集成,请参考我们的快速开始指南获取更多信息。

前置条件

  • 一个 Logto Cloud(或自托管)租户
  • 一个对 AI 代理开放 API 端点的服务

理解流程

  • 服务:你希望对 AI 代理开放的服务。
  • AI 代理:将访问你服务的 AI 代理。
  • Logto:作为 OpenID Connect 提供方(授权 (Authorization) 服务器),管理用户身份。

下面是一个非规范的时序图,展示了整个流程:

设置第三方 AI 代理

要设置第三方 AI 代理访问你的服务,你需要按照以下步骤操作:

  1. 在 Logto 注册 AI 代理:在 Logto 中创建一个应用来代表 AI 代理。
  2. 配置 AI 代理:确保 AI 代理能够向你的服务发起请求,并能处理 401 Unauthorized 响应。
  3. 实现授权 (Authorization) 流程:AI 代理应能处理 OAuth 2.0 授权 (Authorization) 流程,从 Logto 获取访问令牌 (Access token)。
  4. 测试集成:使用 AI 代理访问你的服务,验证其能成功完成认证 (Authentication) 和授权 (Authorization) 请求。

在 Logto 中配置第三方 AI 代理

为了让第三方 AI 代理能够访问你的 服务,你需要在 Logto 中设置一个第三方应用。该应用将用于代表 AI 代理,并获取认证 (Authentication) 和授权 (Authorization) 所需的凭据。

什么是第三方应用?:

第三方应用是由外部开发者(非资源所有者)创建的应用程序,需要用户同意才能访问受保护资源。与第一方应用(你自己的应用程序)不同,第三方应用会显示用户授权页面 (Consent screen),在访问用户数据前请求用户批准特定权限。这确保了用户可以控制与外部服务共享哪些数据。

了解更多,请参阅 第三方应用程序

接入 AI 代理有三种方式:

允许开发者在 Logto 中创建第三方应用

如果你正在构建一个市场或希望允许开发者在 Logto 中创建第三方应用,可以利用 Logto Management API 以编程方式创建第三方应用。这样开发者可以注册他们的应用并获取认证 (Authentication) 所需的凭据。

你需要托管自己的服务来处理客户端注册流程。该服务将与 Logto Management API 交互,代表开发者创建第三方应用。

另外,你也可以在 Logto 控制台手动创建第三方应用,以熟悉整个流程。

允许任何 AI 代理无需预注册即可接入

在开放的 MCP 生态系统中,你通常无法提前知道所有代理。动态应用 移除了注册步骤:代理使用一个公开的 HTTPS URL 提供自己的客户端元数据文档作为其 client_id,Logto 在收到授权 (Authorization) 请求时解析它。

你仍然可以通过授予动态应用的权限来控制代理可请求的内容,并且每次授权 (Authorization) 都会经过用户授权页面 (Consent screen)。

在 Logto 中手动创建第三方应用

你可以在 Logto 控制台手动创建第三方应用,用于测试或临时集成。当你希望快速测试集成而无需实现完整的客户端注册流程时,这种方式非常有用。

  1. 登录你的 Logto 控制台。

  2. 前往 应用程序创建应用程序第三方应用 -> OIDC

  3. 填写应用名称及其他必填项,然后点击 创建应用程序

  4. 点击 权限 标签页,为该应用授予权限

    • 用户部分:如 profileemail 等用户数据权限,用于基础身份声明 (Claims)。
    • API 资源部分:你在 Logto 中定义的 API 资源 的权限(权限/Scopes),例如代表你的 服务 的 API 资源。
    • 组织 (Organization) 部分:如果你使用 Logto 组织 (Organizations),可配置组织权限。
  5. 在第三方应用中,配置 scopes 以请求你授予的权限,例如 openid profile email 以及 API 资源 scopes。

    注意:OIDC 需要 openid。若要获取绑定到 API 资源的访问令牌 (Access token),应用还必须在授权 (Authorization) 请求中包含 resource 参数。遵循最新 MCP 规范的 MCP 客户端会根据受保护资源元数据自动完成此操作。

  6. 相应地配置你的第三方应用的 重定向 URI。记得在 Logto 中同步更新重定向 URI。

第三方应用权限

在底层,第三方应用是一个标准的 OAuth 2.0 / OIDC 客户端。这意味着你(或第三方开发者)可以使用任何 OAuth 2.0 / OIDC 库或框架与 Logto 集成。

需要注意的几点:

  1. 创建第三方应用时,请根据应用的架构选择合适的应用类型:
    • 传统 Web:使用客户端密钥进行认证 (Authentication)。
    • 单页应用 / 原生应用:使用 PKCE 实现无需客户端密钥的安全授权 (Authorization)。
  2. 我们的大多数快速入门指南是为第一方应用编写的,但你仍然可以将它们作为第三方应用集成的参考。
  3. 主要区别在于,第三方应用会显示用户授权页面 (Consent screen),请求用户明确授权访问他们的数据。

完整集成指南请参见 第三方应用

在你的服务中设置授权 (Authorization)

要在你的服务中启用访问控制,你需要实现以下内容:

  1. 在 Logto 中定义 API 资源:在 Logto 中创建代表 AI 代理将要访问的端点的 API 资源。
  2. 实现访问控制逻辑:在你的服务中,实现逻辑以验证从 AI 代理收到的访问令牌 (Access token),并检查用户是否有权限访问所请求的资源。
  3. 响应 AI 代理:如果访问令牌 (Access token) 有效且用户有权限,则返回所请求的资源;否则返回 401 Unauthorized 响应。

要了解如何在你的服务中实现访问控制,请参考我们的授权 (Authorization) 指南

测试集成

  1. 启动你的服务。
  2. 启动 AI 代理。
  3. 在 AI 代理中调用 API 端点以访问你的服务。
  4. AI 代理应能处理 401 Unauthorized 响应,并将用户重定向到 Logto 进行认证 (Authentication)。
  5. 认证 (Authentication) 成功后,AI 代理应收到访问令牌 (Access token),并用它向你的服务发起请求。
  6. AI 代理应能使用访问令牌 (Access token) 从你的服务获取资源。