logto 的 go sdk 不支持直接校验前端 jwt,需手动实现:获取 jwks、验证签名及 issuer、audience、exp、scope;issuer 和 audience 必须严格匹配 logto 控制台配置;推荐用 golang.org/x/oauth2/jwt 与 lestrrat-go/jwx/v2/jwk 组合处理;校验时需检查 scope 子集及 resource claim;调试时应开启 oidc discovery 日志并确认 cors 配置。

Logto 的 Go SDK 不支持直接校验前端传来的 JWT
Logto 官方没有提供 Go 语言的 OIDC Resource Server SDK,所以不能像 Node.js 那样用 @logto/node 直接验证 access token。你拿到前端传来的 Authorization: Bearer <token></token> 后,得自己完成 JWT 校验逻辑——包括获取 JWKS、验证签名、检查 aud、iss、exp 和 scope(如果需要)。
必须手动实现 JWT 校验并匹配 Logto 的 issuer 和 audience
Logto 的 access token 是标准 OIDC JWT,但 issuer 和 audience 必须严格匹配你在 Logto 控制台配置的值。常见错误是:
-
issuer写成https://<your-domain>/oidc</your-domain>(正确),而不是https://<your-domain></your-domain>或带 trailing slash 的变体 -
audience没填或填错——它必须是你在 Logto 中创建的 API Resource 的indicator(比如https://api.example.com),不是应用 ID - JWKS 端点地址硬编码,没做缓存和自动刷新,导致 token 校验失败率升高
推荐用 golang.org/x/oauth2/jwt + github.com/lestrrat-go/jwx/v2/jwk 组合:前者做解析和基础校验,后者负责从 https://<your-domain>/oidc/jwks</your-domain> 动态加载并缓存 JWK Set。
中间件里别忽略 token scope 和 resource access 权限
Logto 的 access token 默认不带 scope,除非你在前端调用 getAccessToken 时显式传了 resource 和 scope 参数。后端校验时,如果业务要求权限隔离(比如 read:posts),就得额外检查 scope claim:
- Logto 发放的 token 中
scope是空格分隔字符串,不是数组 - 不要只校验 scope 存在,要按需做子集判断:比如请求需要
write:posts,则 token 的scope必须包含该值 - 如果用了 Logto 的 Resource-based Access Control(RBAC),还要查
resourceclaim 是否匹配当前 API 路径所代表的资源标识
示例片段:
if !strings.Contains(tokenScope, "write:posts") {
return errors.New("insufficient scope")
}
调试阶段务必开启 Logto 的 OIDC Discovery 日志和 token 解析输出
开发时最容易卡在 token 解析失败但无明确报错。建议在中间件里加一行日志:
log.Printf("parsed token: %+v", token.Claims),再对照 Logto 控制台的 “OIDC Discovery” 页面确认:
-
.well-known/openid-configuration返回的jwks_uri是否可访问 - token 的
iss是否等于该配置里的issuer - token 的
aud是否等于你注册的 API Resource indicator
注意:Logto Cloud 默认关闭 OIDC Discovery 的 CORS,本地调试时若用浏览器前端,需确保后端代理或 Logto 实例已配好 CORS 白名单,否则前端拿不到 token 或 JWKS。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











