[RFC] 121 - 桌面端 OAuth 认证流程重构 #8447
arvinxx
started this conversation in
RFC | 特性开发
Replies: 1 comment
-
自定义协议打开应用这个功能挺好用的,能否判断授权页是 chrome 和 macos 的时候开启自定义协议唤醒 app 功能呀。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
摘要
本RFC描述了 LobeChat 桌面端OAuth认证流程的重构,从基于自定义协议处理器的方式改为基于Web页面重定向和轮询机制的解决方案。这一变更解决了原有方案在不同操作系统环境下的兼容性问题,提供了更可靠的跨平台认证体验。
问题背景
现有实现的问题
1. 自定义协议处理器的局限性
原始实现方式:
com.lobehub.${name}://auth/callback
格式的自定义协议app.setAsDefaultProtocolClient
注册协议处理器open-url
事件(macOS)和second-instance
事件(Windows/Linux)存在的问题:
解决方案
核心设计理念
采用Web页面重定向 + 轮询机制的混合方案,结合Web技术的成熟性和桌面端的控制能力。
新架构设计
1. Handoff机制
概念:
实现:
2. 认证流程重构
新的认证流程:
发起认证请求
Web页面处理
/oidc/callback/desktop
轮询获取凭证
/oidc/handoff
API检查凭证状态3. 数据库设计
OAuth Handoff表:
TTL控制:
技术实现细节
1. 前端实现
AuthCtr控制器重构:
轮询机制:
2. 后端实现
回调路由处理:
轮询API:
3. 错误处理和恢复
窗口显示问题修复:
超时和重试机制:
结论
OAuth认证流程的重构成功解决了桌面端在不同操作系统环境下的兼容性问题,提供了更可靠、更安全的认证体验。通过引入Web页面重定向和轮询机制,我们实现了:
这一重构为LobeChat桌面端的OAuth认证建立了坚实的技术基础,为未来的扩展和优化提供了良好的架构支撑。
进展
Beta Was this translation helpful? Give feedback.
All reactions