跳到主要内容

第三方应用(OAuth / OIDC)

Logto 的第三方应用集成让你可以将 Logto 作为外部应用的 身份提供商 (IdP)。

身份提供商 (IdP) 是一种验证用户身份并管理其登录凭据的服务。在确认用户身份后,IdP 会生成认证 (Authentication) 令牌或断言,并允许用户访问各种应用或服务,无需再次登录。

与 将 Logto 集成到你的应用 指南中你自己开发和完全控制的应用不同,第三方应用是由外部开发者或业务合作伙伴开发的独立服务。

这种集成方式非常适用于常见的业务场景。你可以让用户使用他们的 Logto 账户访问合作伙伴应用,就像企业用户用 Google Workspace 登录 Slack 一样。你也可以构建一个开放平台,让第三方应用添加“使用 Logto 登录”功能,类似于“使用 Google 登录”。

Logto 是基于 OpenID Connect (OIDC) 协议构建的身份服务,提供 认证 (Authentication) 和 授权 (Authorization) 能力。这让集成 OIDC 第三方应用变得和传统 Web 应用一样简单。

由于 OIDC 基于 OAuth 2.0 并增加了认证 (Authentication) 层,因此你也可以通过 OAuth 协议集成第三方应用。

在 Logto 中创建第三方应用​

  1. 前往 控制台 > 应用。
  2. 点击“创建应用”按钮,选择“第三方应用”作为应用类型,并选择以下集成协议之一:
    • OIDC / OAuth
  3. 根据第三方应用的类型选择应用类型:
    • 传统 Web:后端可安全存储客户端密钥的服务端渲染应用(如 Node.js、PHP、Java)。
    • 单页应用 (SPA):完全在浏览器端运行、无法安全存储密钥的客户端渲染应用(如 React、Vue、Angular)。
    • 原生应用:在用户设备上运行的移动或桌面应用(如 iOS、Android、Electron)。
  4. 输入你的应用名称和描述,点击“创建”按钮。一个新的第三方应用就会被创建。

所有创建的第三方应用会在“应用”页面的“第三方应用”标签下进行分类。这种安排有助于你将它们与你自己的应用区分开,方便统一管理所有应用。

集成指南​

查找应用配置信息​

在应用详情页,你可以找到集成所需的 Client ID、Client secret(仅限传统 Web 应用)和 OIDC 端点。

如果第三方服务支持 OIDC 发现,只需提供 Discovery endpoint。否则,点击 显示端点详情 查看所有端点,包括 授权端点 和 令牌端点。

集成支持第三方 IdP 的服务​

如果你要连接的服务或产品原生支持外部身份提供商配置(如企业 SaaS 平台、协作工具),设置流程非常简单:

  1. 打开该服务的 IdP 或 SSO 配置页面。
  2. 从 Logto 复制 Client ID(如需则还有 Client secret),粘贴到服务的配置中。
  3. 如果服务支持 OIDC 自动发现,提供 Discovery endpoint,否则手动复制 Authorization endpoint 和 Token endpoint。
  4. 从服务配置页面复制 Redirect URI,并添加到 Logto 应用的允许重定向 URI 列表中。
  5. 如服务允许,配置 scopes。由于 Logto 是 OIDC 提供商,如果需要认证 (Authentication) 用户请包含 openid scope(可获取 ID 令牌和 UserInfo 端点)。如果只需 OAuth 资源访问,openid scope 可选。

服务配置完成后会自动处理 OAuth / OIDC 流程。

通过 OAuth / OIDC 协议集成​

如果第三方应用需要以编程方式将 Logto 作为 IdP 集成,则应实现标准的 授权请求 (Authorization Code Flow)。我们建议使用适合你编程语言的 OAuth 2.0 / OIDC 客户端库来实现。

传统 Web 应用是机密客户端,可以在后端安全存储客户端密钥。完整实现细节见 授权请求 (Authorization Code Flow)。

关键步骤:

  1. 发起授权请求:将用户重定向到 Logto 的授权端点,携带 client_id、redirect_uri、response_type=code 和 scope。
  2. 处理回调:从重定向中接收授权 code。
  3. 交换令牌:在你的后端,使用 code、client_id 和 client_secret 向令牌端点 POST。

出于安全考虑,所有 OIDC 第三方应用在被 Logto 认证 (Authentication) 后都会被重定向到 用户授权页面 (Consent screen) 进行用户授权 (Authorization)。

所有第三方请求的 用户资料权限、API 资源权限、组织权限 以及组织成员信息都会在用户授权页面展示。

只有当用户点击“授权 (Authorize)”按钮后,这些请求的权限才会被授予第三方应用。

consent screen

后续操作​

常见问题​

Logto 使用基于角色的访问控制 (RBAC) 管理用户权限。在用户授权页面 (Consent screen) 上,只有通过角色分配给用户的权限 (scopes) 会被展示。如果第三方应用请求了用户没有的权限,这些权限会被排除,以防止未经授权的授权 (Authorization)。

管理方式如下:

  • 定义带有特定权限 (scopes) 的全局角色或组织角色。
  • 根据访问需求为用户分配角色。
  • 用户会自动继承其角色的权限 (scopes)。

使用场景:集成 Apache Answer,为你的用户搭建社区

使用 Logto 作为第三方身份提供商 (IdP)