首页 > 解决方案 > 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 版

我会很感激任何帮助。

标签: laravelgoogle-authenticationlaravel-socialite

解决方案


好的...这个问题很多,答案很少(或错误)。我碰巧在安装了完全相同代码的 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 例外列表中,它开始在此服务器上运行。具有讽刺意味的是,我没有在另一台服务器上安装该规则,它工作正常。虽然它是一个稍微低端的服务器,所以亚马逊可能对它们运行不同的规则集。


推荐阅读