Skip to content

身份接入概览 ​

本页回答一个问题:用户的身份来自第三方(Google、Apple、微信、运营商号码认证……)时,wicket 里该用哪一块能力。

wicket 在这方面提供两类彼此独立的能力,它们解决的问题、依赖和接入方式都不同:

(a) 授权服务器的外部登录(b) 无状态令牌验证包
代表auth/google、auth/facebook、auth/jwt、dynamicschemeoidcverify、wechatverify、phoneverify
运行位置挂在 wicket 中间件管线里,是认证方案(scheme)的 handler普通 Go 包,业务代码直接调用
交互形态浏览器重定向、回调路径、cookie一次函数调用:输入凭据串,输出身份或错误
依赖di.Root、ServerConfig、宿主提供的 cookie handler不依赖任何 store、不依赖 DI 容器,可单独 import
结果去向登录进 wicket 的会话,之后由授权端点签发 wicket 自己的令牌交给你的业务代码自行决定:查库、建号、签发自己的会话

(a) 作为授权服务器时接入外部登录 ​

wicket 作为 OpenID Connect / OAuth 2.0 授权服务器运行时,/connect/authorize 需要一个“已登录用户”。这个用户可以来自你自己的登录页,也可以来自外部身份提供者:

  • Google / Facebook:标准的 OAuth 2.0 授权码往返。wicket 内置两个 handler,负责构造跳转 URL、在回调路径(/signin-google、/signin-facebook)换取令牌、拉取用户信息并映射为 claims。见 外部登录。
  • JWT Bearer:不是登录流程,而是让宿主的 API 接受外部签发的 JWT 访问令牌。见 JWT Bearer 认证。
  • 动态认证方案:在运行期增删认证方案记录。v0.1.4 中这一子系统只提供了存储与解析层,且通过容器无法启用,详见 动态认证方案 中的现状说明。

外部登录需要宿主补齐 cookie handler

v0.1.4 没有内置可用的 cookie 认证 handler:默认方案 wicket 与外部方案 wicket.external 在容器中注册的是一个“不支持”的占位 handler。外部登录回调成功后要把用户签入某个 cookie 方案,这一步必须由宿主通过 ServerConfig.SetAuthenticationHandlerProvider 提供实现。详见 外部登录。

(b) 无状态令牌验证包 ​

这三个包面向“移动端/前端已经从厂商拿到了凭据,后端只需确认它是真的、并取出身份”的场景。它们不参与授权码流,没有 handler、没有 cookie、没有重定向,也不读写任何 store:

  • oidcverify:用 JWKS 公钥在本地验证 Apple、Google 或任意标准 OIDC 提供者签发的 ID Token(仅 RS256)。
  • wechatverify:把微信移动应用登录拿到的授权 code 交给微信服务端,换取 unionid / openid。
  • phoneverify:把阿里云号码认证(一键登录)SDK 拿到的 token 交给阿里云服务端,换取手机号。

前一个是本地验签,后两个是服务端交换,两者在出网、延迟、机密保管、故障语义上差别很大,选型前建议先读 本地验签与服务端交换。

容器里分别为三个包注册了一个空的配置指针(*oidcverify.ProviderConfig、*wechatverify.Config、*phoneverify.PhoneAuthConfig),但不注册验证器本身——空配置构造必然失败。最简单的用法是完全绕开容器,在你自己的初始化代码里直接调用各包的 NewVerifier。

我该用哪个 ​

你手里的东西 / 你的目标选用
浏览器用户要“用 Google 账号登录”你的授权服务器,然后由 wicket 给下游应用签发令牌auth/google(外部登录)
同上,但身份来源是 Facebookauth/facebook(外部登录)
你的 HTTP API 要接受另一个签发方(也可能就是 wicket 自己)发出的 JWT 访问令牌auth/jwt(JWT Bearer 认证)
App 端完成了“通过 Apple 登录”,把 identityToken 发给后端oidcverify.AppleConfig(oidcverify)
Android / iOS 端用 Google 登录 SDK 拿到 ID Token,发给后端oidcverify.GoogleConfig(oidcverify)
任意标准 OIDC 提供者签发的 ID Token(RS256 + JWKS)oidcverify.ProviderConfig(oidcverify)
App 端完成微信登录,拿到授权 codewechatverify(wechatverify)
App 端完成运营商一键登录,拿到号码认证 tokenphoneverify(phoneverify)
想在运行期由管理后台增删登录方式目前无可用的端到端方案,见 动态认证方案

两类能力可以叠加

常见组合是:App 端用 oidcverify / wechatverify / phoneverify 在后端确认身份,再由你的代码把该身份映射到本地用户;之后若要为第三方应用签发标准令牌,再走 wicket 的授权流程(例如 CIBA 或授权码)。验证包只负责“确认身份”,不负责“签发令牌”。

相关阅读 ​

以 Apache License 2.0 发布 · 文档内容 © 2026 Wicket 作者