使用令牌认证时,什么数据属于承载令牌?

时间:2018-10-19 09:53:49

标签: php mysql oauth jwt bearer-token

我使用Firebase PHP JWT作为生成资源令牌的框架,因此我们可以在多个平台上部署产品。为了获得最佳实践和可维护性,由于可用性,我决定使用OAuth来实现这一目标。

当前,设备将被重定向到服务器(通过浏览器)以登录,要求输入基本的用户名,密码和验证码。出于安全考虑,我不想让设备询问用户名和密码并将数据发布到脚本中。

设备还会在地址栏中发送 scope 作为对设备所需数据类型的GET请求。

https://www.example.com/oauth/login
&scope=user.profile,user.messages

在用户使用JQuery magic成功登录后,该页面中会加载另一个页面,要求他们允许或拒绝范围。

成功后,我的JSON Web令牌生成如下:

$secret = 'Some derived code unique to that user that authenticated';
$b64    = array('uuid' => 'The users ID', 'scopes' => array('Contains the scopes the user allowed'));

// Some code to store this key into the database cross-referenced to the uuid

http_response_code(200);
die(json_encode(\Firebase\JWT\JWT::encode($b64, $secret))); // or do I send as a header called Bearer?

然后,设备会将令牌发送到资源服务器终结点,然后对该令牌进行解码,从而向我提供确认的用户uuid以及要发回的范围。

但是,这似乎并不安全。如果有人愿意,他们肯定会修改JWT正文(b64)并修改请求的范围。我想出的当前解决方案是:

  

将范围与令牌和uuid一起存储在数据库中。

但是,我遇到的问题是我需要放入承载令牌中的什么?应该发送什么数据来生成令牌?

我看过this question,但没有说明应在承载令牌中加密哪些数据以供资源服务器使用。

0 个答案:

没有答案