具有OAuth参数的JWT + Laravel社交名称

时间:2017-12-14 22:21:52

标签: laravel oauth jwt

我想要实现的目标:

安全地允许用户使用单页应用将他们的帐户连接到不同的社交媒体。

我在做什么:

我正在使用 SPA ,因此使用 JWT 作为我的用户身份验证方法。我正在使用 Laravel Socialite 在OAuth调用中传递JWT令牌,如下所示:

return Socialite::driver($provider)
    ->with(['provider' => $provider, 'token' => $token])
    ->redirectUrl($redirectUri)
    ->stateless()
    ->redirect();

在回调中,我根据令牌获取用户。使用此方法允许第三方提供程序访问JWT令牌。这是非常不安全的。

我的问题:

  

有没有更好的方法呢?我应该使用某种哈希+盐+秘密吗?

1 个答案:

答案 0 :(得分:1)

您应该查看JWT

  

JSON Web Tokens是一种开放的,行业标准的RFC 7519方法   在两方之间安全地代表

JWT Token由三部分组成,headerpayloadverify signature

您正在使用无状态身份验证,并且通过JWT令牌验证用户的唯一方法。要在重定向后对用户进行身份验证,您应该创建包含应用程序用户ID的有效负载,并传递给第三方提供商,以便在重定向时,他们会将JWT令牌传递给您。

将JWT令牌传递给第三方提供程序是没有问题的,但请注意,有效负载不应包含任何敏感数据。如果有效负载以某种方式被嗅探,则不会有任何损害,因为如果黑客试图更改有效负载,则验证签名会有所帮助,并且应用程序无法验证令牌,应用程序将抛出异​​常。

  

签名用于验证JWT的发件人是谁   说这是并确保消息没有随着时间的推移而改变   方式。