在自主托管的实例上,Google OAuth 登录出现 redirect_uri_mismatch 错误
说明
Google OAuth 登录在自托管实例上被打破. 登录流量以Google的重定向 uri mismatch出错失败,因为两个不同的OAuth提供者用于同一登录流量的两半,每个版本都有不同的重定向 uri. 这意味着用于获取授权代码的重定向 uri与用于交换一个符号的代码不符,被Google拒绝. 具体而言:
- 链接生成由OauthProvider(GENERIC)通过oauth处理。 professor.js,它用重定向 uri=${FRONTEND URL}/设置来构建 Google 认证 URL
- 托肯交换(OauthExists call)由GoogleProvider(GOOGLE)通过google.producer.js处理,它使用重定向-uri=${FRONTEND URL}/整合/社会/Youtube
这两个重定向URI不匹配,导致Google返回重定向 uri mismatch,后端返回500.
- 复制步骤
通过Docker 自行部署Postiz
配置 Google OAuth 证书:
- 设置 POSTIZ OOTH CLIENTH ID, POSTIZ OOTH CLIENTH SECRET, POSTIZ OSTIZ AUTH URL, POSTIZ OSTH USERINFO URL 设作"你"CLIENT"ID,"你"CLIENT"SECRET
- 将https:///设置和https:///整合/social/youtube登记为授权重定向Google Cloud控制台的URI
- 导航到 Postiz 登录页面
- 用谷歌点击登录
- 认证谷歌账户
- 观察500个错误
预期行为
Google OAuth 登录成功完成,用户被认证.
- 有截图的实际行为
后端返回一个 500 个内部服务器出错 。 浏览器控制台显示 :
** POST/api/auth/oauth/GOGLE/存在500(内部服务器错误)**
后端日志显示 :
** 错误 [例外] 重定向 uri mismatch 错误: 重定向 uri mismatch 在Gaxios. 请求(./gaxios/building/src/gaxios.js:142:23) at async OAuth2Client.get TokenAsync (./google-auth-library/building/src/auth/oauth2客户端.js:158:21) at async Google Provider.getToken (./src/ services/auth/producers/google.productor.js:44:28) (中文(简体) ). 检查员(./src/service/auth/auth.service.js:185:23) 自动控制器 自动控制器 自动控制器 自动控制器
操作系统
麦克OS
QQ 节点版本
页:1
QQ 为 Bug 提供任何额外的上下文 。
根源分析
google.profer.js (Google Provider)由@AuthProvider ({提供商:"GOOGLE"})来装饰并处理oauthExists端点. 然而,它是围绕YouTube OAuth(客户AndYoutube ())而建的,使用YouTUBE CLIENT ID/YOTUBE CLIENT SECRET,重定向Uri=${FRONTEND URL}/整合/社交/Youtube. oauth.profer.js (Oauth Provider)由@AuthProvider({提供商:"GENERIC"})来进行装饰并使用重定向Uri=${FRONTEND URL}/设置生成初始的Google登录链接. 前端调用GENERIC提供商进行链接生成,GOGLE提供商调用符交换器——这些 . . . . . . .
内容来源: gitroomhq/postiz-app