docs/wiki/安全认证/OIDC认证调用流程.md
本文档说明 WeKnora 当前 OIDC 登录能力的实际调用过程,覆盖前后端完整链路。
OIDC 认证是标准版多租户场景下的登录方式,Lite 版不需要
本项目的 OIDC 登录采用 后端发起授权参数生成、后端接收回调并完成 code 换 token、前端通过 URL hash 接收最终登录结果 的模式。
核心特点:
code 向 OIDC Provider 换取 token自动创建用户与租户的逻辑与 共享空间说明 的多租户模型相关
| 接口 | 说明 |
|---|---|
GET /api/v1/auth/oidc/config | 获取 OIDC 是否启用及 Provider 展示名称 |
GET /api/v1/auth/oidc/url | 生成第三方登录跳转地址 |
GET /api/v1/auth/oidc/callback | OIDC Provider 回调地址 |
前端调用 /auth/oidc/config,决定是否展示第三方登录入口。
前端调用 /auth/oidc/url 获取授权地址,然后跳转到 OIDC Provider。
Provider 回调后端 /auth/oidc/callback,后端用 code 换 token、拉取用户信息、关联或创建本地用户,并签发 WeKnora JWT。
后端 302 回前端,通过 #oidc_result 传递登录结果;前端在 App.vue 中统一解析。
| 配置项 | 说明 |
|---|---|
OIDC_AUTH_ENABLE | 是否启用 OIDC 登录 |
OIDC_AUTH_CLIENT_ID | OIDC Client ID |
OIDC_AUTH_CLIENT_SECRET | OIDC Client Secret |
OIDC_AUTH_DISCOVERY_URL | OIDC Discovery 地址 |
OIDC_AUTH_SCOPES | Scope 列表,默认 openid profile email |
启用时的最小要求:client_id + client_secret + (discovery_url 或 authorization_endpoint + token_endpoint)
项目中已提供 Dex 示例配置:misc/dex-config.yaml。
除 Dex 外,也可以使用 KeyCloak 等其他符合 OpenID Connect 协议的 Provider
redirect_uri 必须严格匹配 Provider 客户端配置