Logto OIDC connector 怎么接入任意支持 OIDC 协议的身份提供商
2026/9/15 19:06:29 网站建设 项目流程

Logto OIDC connector 怎么接入任意支持 OIDC 协议的身份提供商

【免费下载链接】logto🧑‍🚀 Authentication and authorization infrastructure for SaaS and AI apps, built on OIDC and OAuth 2.1 with multi-tenancy, SSO, and RBAC.项目地址: https://gitcode.com/GitHub_Trending/lo/logto

如果你手里已经有一个支持 OpenID Connect 协议的身份提供商(自建 IdP 或第三方身份服务),想让用户用它来登录基于 Logto 的应用,Logto 内置的 OIDC connector 就是对应的接入方式。它不绑定任何特定厂商,只要对方支持 OIDC,都可以配成一个社交登录连接器:在 Logto Console 里创建 connector 并填入身份提供商的端点与凭据,然后在 Sign-in experience 中启用社交登录按钮,用户即可完成第三方登录。

需要明确的前提:身份提供商必须支持 OIDC 协议,这是配置有效 connector 的先决条件(见 connector README)。另外 OIDC connector 在 Logto 中属于特殊类型,同一租户下可以添加多个基于 OIDC 协议的 connector 实例。

在身份提供商侧收集接入信息

开始配置前,按身份提供商的文档注册一个用于 OIDC 授权的应用,并收集下面这些信息。README 中明确列出了需要找到的四类端点:authorizationEndpointtokenEndpointjwksUriissuer,"它们应该在身份提供商的文档中提供"。

需要收集的信息用途
clientId/clientSecret在 OIDC 应用的详情页获取;前者用于标识客户端,后者用于向授权服务器认证客户端身份
authorizationEndpoint发起认证流程的端点
tokenEndpoint客户端用授权码换取 ID token 的端点
jwksUri获取身份提供商 JWKS(JSON Web Key Set)的地址,Logto 用它拉取公钥来校验 ID token
issuer身份提供商的唯一标识,校验时与 JWT 的issclaim 比对
scope空格分隔的权限列表;如果需要调用 IdP 的 API 并持久化 token,还需加入对应的 API scope

tokenEndpointAuthMethod(token 端点的客户端认证方式)不要凭猜测填写:README 建议查阅 OAuth 2.0 服务提供方 discovery 端点上的token_endpoint_auth_methods_supported字段,或参考该服务提供方的文档来确定支持哪些方式。

在 Logto Console 创建并配置 OIDC connector

在 Logto Console 中新建一个 OIDC connector,按下表填写配置。字段名以 Console 表单的 label 为准,来源是 constant.ts 中定义的表单项。

必填项:

字段类型说明
Authorization Endpoint文本认证发起端点
Token Endpoint文本token 交换端点
Client ID文本客户端唯一标识
Client Secret文本客户端机密,README 强调它属于机密信息,需妥善保管
Token Endpoint Auth Method下拉可选client_secret_postclient_secret_basicclient_secret_jwt,默认client_secret_post
Scope多行文本空格分隔。注意:按 OIDC 规范 scope 必须包含openid,如果漏填,Logto 会自动补上(见 types.ts 中的scopePostProcessor
ID Token Verification ConfigJSON至少包含jwksUri;Console 中该字段的默认模板为{ "jwksUri": "<jwks-uri>" },需替换为你身份提供商的实际 JWKS 地址

ID Token Verification Config的完整可选属性定义在 types.ts 的idTokenVerificationConfigGuard中:issueraudiencealgorithmsclockTolerancemaxTokenAgesubjecttyp等均可选,只有jwksUri必填。README 也提醒这些属性的详细语义可参考 jose 库的JWTVerifyOptions文档。一个典型写法(尖括号内替换为你自己的端点):

{ "jwksUri": "https://<your-idp>/jwks", "issuer": "https://<your-idp>" }

配置中有几个字段不需要你填,Logto 会固定或自动生成,理解这些规则能避免配置上的困惑(均来自 connector README):

  • 出于安全考虑,只支持Authorization Code授权类型,不支持 implicit 和 hybrid flow;
  • responseType固定为codegrantType固定为authorization_code,两者自动填充;
  • nonce不放在配置里,由 Logto 在每次认证请求中随机生成,并在回调时校验。

可选项(按需使用):

字段适用条件
Client Secret JWT Signing Algorithm仅当 Token Endpoint Auth Method 选client_secret_jwt时出现,可选HS256(默认)、HS384HS512
Authentication Request Optional ConfigJSON。用于追加 OIDC Authentication Request 的可选参数:responseModedisplaypromptmaxAgeuiLocalesidTokenHintloginHintacrValues
Custom ConfigJSON,Record<string, string>。当目标提供商在 OIDC 标准之外有自己的变体参数时,用它传递自定义参数;严格遵循标准的提供商无需理会
Accept String-typed Boolean Claims开关,默认关闭。部分提供商会把email_verifiedphone_verified等布尔 claim 返回成字符串,开启后会自动转换
Trust Unverified Email开关,默认关闭。默认情况下email_verified缺失或为 false 时 email 不会同步到用户资料;仅在你确信该 IdP 提供的邮箱经过验证时才开启

关于资料同步的两个默认行为(来自 types.ts 中的实现):email 只有在email_verified为真(或开启了 Trust Unverified Email)时才会同步;phone 只有在phone_verified为真时才会同步。

此外还有两项不影响连接成功、但影响终端体验的通用设置:社交按钮的namelogo(支持明/暗两套),以及身份提供商名称(IdP name)——每个社交 connector 用唯一的 IdP name 区分用户身份。资料同步策略可选Only sync at sign-up(仅首次登录时拉取资料)或Always sync at sign-in(每次登录都更新)。

启用社交登录并验证结果

connector 创建完成后,按 README 的 "Utilize the OIDC connector" 一节把它接入终端用户流程:

  1. 进入 Logto Console 的Sign-in experience > Sign-up and sign-in页面;
  2. Social sign-in区域添加刚创建的 OIDC connector。

之后用真实用户账号走一次第三方登录。接入是否生效可以按这条路径核对(README "Manage user's social identity" 一节):

  1. 进入User management,打开登录用户的资料页;
  2. Social connections下找到对应的身份提供商条目并点击Manage
  3. 该页面会展示这条社交连接、从社交账号授权并同步过来的全部资料,以及 access token 状态。

如果用户在登录时收到ID Token validation failed due to 'nonce' mismatch.这类报错,说明 ID token 校验失败,方向是核对该 connector 的jwksUriissuer是否与身份提供商一致;源码中的处理逻辑见 index.ts(parseUserInfoFromIdToken)。另外 Logto 校验 ID token 时固定把audience设为你的clientId,即身份方签发的 ID token 受众必须是该 client。

边界与后续可选路径

  • 只支持 Authorization Code 流程,implicit/hybrid 不可用;
  • 如果希望应用还能在用户授权后代为调用 IdP 的 API:在scope中加入所需 API scope,并在 connector 中开启Store tokens for persistent API access,Logto 会把 token 存入 Secret Vault;对标准 OAuth/OIDC 身份提供商,scope中还必须包含offline_access以获得 refresh token。token 的取用方式见 Logto 官方文档的 Secret Vault 指南(README 中的外链,仓库内不展开);
  • OIDC connector 也可以不开启社交登录,仅用于账户绑定(Account API)和 API 访问;
  • 已知限制:部分 IdP 的 access token 响应不携带具体 scope 信息,Logto 无法直接展示用户授予的权限列表,但只要用户授权时同意了请求的 scope,应用调用 OIDC API 时即拥有对应权限。

【免费下载链接】logto🧑‍🚀 Authentication and authorization infrastructure for SaaS and AI apps, built on OIDC and OAuth 2.1 with multi-tenancy, SSO, and RBAC.项目地址: https://gitcode.com/GitHub_Trending/lo/logto

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询