相关疑难解决方法(0)

CSRF如何在OAuth2.0中没有状态参数的情况下工作?

我在公司的SSO中使用了identityserver3的OAuth2.0,我无法理解state参数如何阻止CSRF.

我已将攻击流程复制如下:

1.Mallory访问某个客户的网站,并开始授权该客户使用OAuth访问某个服务提供商的过程

2.客户要求服务提供商允许代表Mallory请求访问权限

3.Mallory被重定向到服务提供商的网站,在那里她通常会输入她的用户名/密码以授权访问

4.相反,Mallory陷阱/阻止此请求并保存其URL(Callback Url)

5.现在,Mallory以某种方式让Alice访问该URL.如果Alice使用自己的帐户登录服务提供商,则其凭据将用于颁发授权码

6.授权代码被交换为访问令牌

7.现在,Mallory在客户端的帐户有权访问服务提供商处的Alice帐户


我可以理解第1步到第4步.但是从第5步开始,我有些困惑.根据我的理解,在步骤5中,Alice在登录时访问回调URL,然后服务器只使用授权码访问OAuth服务提供商以在后端获取openid和访问令牌,然后Alice的浏览器只是使用Mallory的帐户和访问令牌执行登录.与Mallory的浏览器有什么关系?你能详细解释一下吗?感谢您花时间阅读我的话!

oauth-2.0

13
推荐指数
2
解决办法
6286
查看次数

Laravel Socialite:InvalidStateException(有时)

我网站上的一些用户正在体验Laravel\Socialite\Two\InvalidStateException.我已经采取了对Laravel Socialite的回复中概述的步骤:InvalidStateException并且无法解决问题.只有一小部分用户似乎遇到了这种情况.

我有2个fpm/nginx docker容器坐在HAProxy负载均衡器后面.

php laravel-socialite

11
推荐指数
2
解决办法
2485
查看次数

Laravel 5在AbstractProvider.php中创建InvalidStateException

我正在尝试使用Socializelaravel 5中使用facebook登录.

这是我的路线文件代码.

Route::get('fb', function ($facebook = "facebook")
{
    $provider = \Socialize::with($facebook);      
    if (Input::has('code'))
    {
        $user = $provider->user();
        return var_dump($user);
    } else {
        return $provider->scopes(['public_profile','user_friends'])->redirect();
    }
});
Run Code Online (Sandbox Code Playgroud)

登录成功,我得到代码,但get $provider->user()我得到错误的时间.

AbstractProvider.php第161行中的InvalidStateException

php facebook laravel laravel-5

8
推荐指数
4
解决办法
2万
查看次数

Laravel Socialite:Laravel \ Socialite \ Two \ InvalidStateException

我是Laravel Socialite的新手,从社交媒体登录重定向回时出现此错误

Laravel \ Socialite \ Two \ InvalidStateException位于/vendor/laravel/socialite/src/Two/AbstractProvider.php:209**

即使我已经尝试过此解决方案/sf/answers/2221718551/, 但我仍然面临着同样的错误。

这是Socialite控制器的代码

// Redirect to Social provider for login
public function redirectToProvider($provider)
{
    return Socialite::driver($provider)->redirect();
}

// Handling get request from social provider
public function handleProviderCallback($provider, Request $request)
{
    $user = Socialite::driver($provider)->user();
}
Run Code Online (Sandbox Code Playgroud)

实际上,代码在一开始就起作用了,但是在我将非www重定向到www之后,它就停止了工作。这是.htaccess文件

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-socialite

5
推荐指数
1
解决办法
970
查看次数

在会话中更改域后,Laravel Auth :: login()不持久

之前,在我更改session.php中的domian之前,我的Auth :: login()工作正常,它将保留cookie,因此他们无需再次登录。当我的一些朋友告诉我,当他们单击登录(来自Facebook)时,它将以某种方式在AbstractProvider.php中返回InvalidStateException。

我在Google周围搜索,知道cookie可能引起某些问题,解决方案是将session.php中的域从null更改为我的域(例如myapps.com)。

当我更改为myapps.com之后,invalidstateException将不再发生,但不会继续我的登录。6到12个小时后,它要求我再次登录。

下面是我的代码(我相信在更改会话之后,我的代码是正确的,并且登录将不再持久)。

$UserLogin = User::where('facebook_id', '=', $user->getId())->first();
Auth::login($UserLogin, true);
Run Code Online (Sandbox Code Playgroud)

php cookies session laravel laravel-5

0
推荐指数
1
解决办法
1072
查看次数