核心服务
介绍
核心服务 是一个用于关键 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 Token Introspection
- OAuth 2.0 Token Revocation
- OAuth 2.0 Resource Indicators
- Proof Key for Code Exchange (PKCE)
Logto API
Management API
Management API 是一组管理和更新 Logto 数据的 API。只有具有 admin
角色的用户才能访问它们。
前往 API 参考 查看详细信息。
要以编程方式访问 API,请参阅 与 Management API 交互。
Experience API
Experience API 是一组支持自定义登录界面交互的专用端点。
这些 API 使开发者能够实现核心认证功能,包括登录、注册、密码重置、社交账户绑定和多因素认证 (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>
附加到授权头。
通过 Logto Account API,你可以构建一个与 Logto 完全集成的自定义账户管理系统,如个人资料页面。
查看 通过 Account API 进行账户设置 以了解如何利用 Account API 构建自己的账户设置页面。
参考 Account API 参考 获取详细的 API 文档。
前端代理
前端代理 是一个以环境相关方式服务于前端项目的中间件函数:
- 如果是开发环境,它会将 HTTP 请求代理到前端开发服务器。
- 如果是生产环境,它会直接提供静态前端文件。
Logto 有三个前端代理:
名称 | 前端包 | 挂载路径 |
Admin Console 代理 | /packages/console | /console |
Demo app 代理 | /packages/demo-app | /demo-app |
UI (登录体验) 代理 | /packages/ui | / |
你可能会注意到 UI 代理使用根路径。与其他代理不同,UI 代理是一个回退代理,这意味着它仅在没有其他代理匹配时才生效。