laravel - Google Authentification Laravel Socialite 在询问“个人资料”范围时给出 403 错误
问题描述
正如标题所说,我在询问“个人资料”范围时收到 403 禁止错误。
这是我的代码
// routes/web.php
Route::get('google', 'Auth\GoogleAuth@auth')->name('google-signup');
Route::get('googlecallback', 'Auth\GoogleAuth@callback');
// Auth/GoogleAuth.php methods
public function auth()
{
return Socialite::driver('facebook')->redirect();
}
public function callback()
{
$socialUser = Socialite::driver('facebook')->user();
dd($socialUser);
}
我知道它是“个人资料”范围的原因是因为当我尝试
public function auth()
{
return Socialite::driver('facebook')->setScopes(['email','openid'])->redirect();
}
一切正常,完美地,我收到了电子邮件和 ID,只是没有“个人资料”范围,我没有获得用户信息。我需要上述信息(姓名、名字、姓氏等)。
我尝试了 stateless() 解决方案,但我一直收到相同的 403 错误。我在这里和 github 中看到了一些类似的问题,但这些解决方案也对我不起作用。
Laravel 7.x 版 Laravel Socialite 4.4 版
我会很感激任何帮助。
解决方案
好的...这个问题很多,答案很少(或错误)。我碰巧在安装了完全相同代码的 2 个不同的 Amazon Lightspeed 实例上遇到了这个问题,并且在一台服务器上谷歌登录/回调工作正常,而在另一台 403 上运行。
这是 MOD 安全问题。它阻止了使用 Laravel 代码中的 .profile 显然或可能需要拉下 Google 用户数据。要解决此问题,您需要做的是在 mod-sec 中关闭此规则的 ID。对我来说,那是 210580。
消息:使用代码 403(第 2 阶段)拒绝访问。ARGS:scope 上的匹配短语“.profile”。[file "/etc/apache2/modsecurity.d/rules/comodo_free/08_Global_Other.conf"] [line "57"] [id "210580"] [rev "2"] [msg "COMODO WAF: OS File Access Attempt| |aeroscale.net|F|2"] [data "匹配数据:在 ARGS 中找到的 .profile:范围:电子邮件配置文件 openid https://www.googleapis.com/auth/userinfo.profile https:/www.googleapis.com/ auth/userinfo.email"] [severity "CRITICAL"] [tag "CWAF"] [tag "Other"] Apache-Error: [file "apache2_util.c"] [line 273] [level 3] [client 73.238.35.209 ] ModSecurity:使用代码 403(第 2 阶段)拒绝访问。ARGS:scope 上的匹配短语“.profile”。[文件“/etc/apache2/modsecurity.d/rules/comodo_free/08_Global_Other.
我将它添加到 Mod Security 中的 Plesk 例外列表中,它开始在此服务器上运行。具有讽刺意味的是,我没有在另一台服务器上安装该规则,它工作正常。虽然它是一个稍微低端的服务器,所以亚马逊可能对它们运行不同的规则集。
推荐阅读
- flutter - ImageProvider 错误 - Flutter
- r - 如何仅过滤在 2018 年和 2019 年都存在每个因素“A”的行
- javascript - javascript在地图中使用await
- javascript - React-Router:打开链接组件时如何隐藏主页?
- docker - 如何根据现有项目的变化自动构建新的自定义镜像?
- reactjs - 如何在我的反应应用程序中仅在一个组件中使用引导程序而不会弄乱布局?
- java - 反转大小写的Java方法不会反转所有字母
- python - SyntaxError:lib/python3.8/site-packages/sql_server/pyodbc/base.py django 在 Linux 上部署的语法无效
- docker - 建立从 Jenkins 容器到 SSH 服务器容器的 SSH 连接,我可以用密码登录建立但不能用私钥建立
- javascript - JavaScript 与 ReactJS 中的计时器准确性与在线计时器