Zhang Xiaomao
Zhang Xiaomao
### 🥰 需求描述 在内部部署(如团队或个人工具)的场景下,LobeChat经常被部署在反向代理的后端。以上场景中,很多反向代理过程中已经集成了单点登录功能,可以通过向后端传输"X-REMOTE-USER"等请求头来传递已通过验证的用户信息。LobeChat的自部署数据库版可否添加一种模式,直接通过读取用户定义的请求头来获取用户名、电子邮件、头像、UUID?个人认为这一功能将极大便利LobeChat作为团队工作台的集成工具之一出现。 ### 🧐 解决方案 ## 方式一 - 服务部署时,指定`AUTH_BY_HEADER=TRUE`,`AUTH_USERNAME_HEADER=X-REMOTE-USER-NAME`,`AUTH_USERID_HEADER=X-REMOTE-USER-ID`,`AUTH_USEREMAIL_HEADER=X-REMOTE-USER-EMAIL`,`AUTH_USERFAVICON_HEADER=X-REMOTE-USER-FAVICON`等变量; - 服务运行中,直接读取访问者的对应请求头,完成无感身份认证。 - 个人认为此方法非常普适,但可能安全性略差,需要反向代理服务器注意请求头的过滤,不过这是部署团队自己要注意的事情了。 ## 方式二 - 很多团队的反向代理中认证方式也是OIDC或OAuth2.0, - 通过读取其传递的`X-REMOTE-USER-TOKEN`等类似的OAuth2.0 Token,再通过Token从SSO拉取用户信息来完成无感身份认证。 - 个人认为此方法泛用性较差,可能不兼容团队的一些情况,但安全性略高,可以预防伪造请求头攻击。 ## 目的 主要就是为了免除登录团队工具之后,跳转或通过内嵌页面来到LobeChat后还得再登陆一次的繁琐。 ### 📝 补充信息...