核心服务
介绍
核心服务 是一个用于 Logto 关键任务的单体服务。源代码位于 @logto/core
。
核心服务 和 SDK 核心 是两个独立的概念。请参阅 SDK 约定 了解它们之间的区别。
为了简化,我们将核心服务分为四个主要模块:
名称 | 描述 | 挂载路径 |
OIDC 提供者 | 一个 OpenID 提供者。 | /oidc |
Logto API | Management API、Experience API 和 Account API。 | /api |
前端代理 | 前端项目的 HTTP 代理或静态文件服务。 | 详情请参阅 前端代理。 |
包括 OIDC 在内的后端 API 是在 core
包中构建的,而前端代理依赖于 Logto monorepo 中相应的兄弟包。
OIDC 提供者
Logto 在底层使用了出色的认证 OpenID Connect 实现 node-oidc-provider。提供者挂载在 /oidc
,你可以在 packages/core/src/oidc 中查看相关配置和文件。
OIDC 用户信息端点 可用,并挂载在 /oidc/me
。
如果你想直接调用 OIDC API,请记得设置头部 Content-Type: application/x-www-form-urlencoded
。
启用的 OpenID 功能
- OpenID Connect Core
- OpenID Connect Discovery
- OpenID Connect RP-Initiated Logout
- OpenID Connect Back-Channel Logout
- OAuth 2.0
- OAuth 2.0 令牌内省
- OAuth 2.0 令牌撤销
- OAuth 2.0 资源指示器
- OAuth 2.0 令牌交换
- 代码交换证明密钥 (PKCE)
Logto API
Management API
Management API 是一组管理和更新 Logto 数据的 API。只有具有 admin
角色的用户才能访问它们。
请访问 API 参考 查看详细信息。
要以编程方式访问 API,请参阅 与 Management API 交互。
Experience API
Experience API 是一组支持自定义登录界面交互的专用端点。
这些 API 使开发人员能够实现核心认证 (Authentication) 功能,包括登录、注册、密码重置、社交账户绑定和多因素认证 (MFA)。要实现这些功能,你的自定义 UI 需要与 Experience API 交互。
要更好地理解用户流程和实现细节:
- 查看 开发你的自定义 UI 指南,了解如何使用 Experience API 构建你的自定义体验 UI
- 参考 Experience API 参考 获取详细的 API 文档
- 阅读 Experience API 设计 RFC 以获取深入的技术规范和示例
Account API
Account API 是一组全面的 API,允许终端用户直接访问 API,而无需通过 Management API,这里是亮点:
- 直接访问:Account API 使终端用户能够直接访问和管理自己的账户资料,而无需通过 Management API 中继。
- 用户资料和身份管理:用户可以完全管理他们的资料和安全设置,包括更新电子邮件、电话和密码等身份信息,以及管理社交连接。MFA 和 SSO 支持即将推出。
- 全局访问控制:管理员对访问设置拥有完全的全局控制,可以自定义每个字段。
- 无缝授权:授权比以往更简单!只需使用
client.getAccessToken()
获取 OP (Logto) 的不透明访问令牌,并将其作为Bearer <access_token>
附加到 Authorization 头中。
通过 Logto Account API,你可以构建一个完全集成 Logto 的自定义账户管理系统,如个人资料页面。
查看 通过 Account API 进行账户设置 以了解如何利用 Account API 构建自己的账户设置页面。
参考 Account API 参考 获取详细的 API 文档。
前端代理
前端代理 是一种中间件功能,以与环境相关的方式服务于前端项目:
- 如果是开发环境,它将 HTTP 请求代理到前端开发服务器。
- 如果是生产环境,它将直接提供静态前端文件。
Logto 有三个前端代理:
名称 | 前端包 | 挂载路径 |
管理控制台代理 | /packages/console | /console |
演示应用代理 | /packages/demo-app | /demo-app |
UI(登录体验)代理 | /packages/ui | / |
你可能注意到 UI 代理使用根路径。与其他代理不同,UI 代理是一个回退代理,这意味着它仅在没有其他代理匹配时才生效。