什么类型的令牌应该用于基于内部/私人休息令牌的api身份验证?

时间:2014-07-07 19:31:55

标签: security rest

我正在实现一个使用内部/私有rest api进行后端处理的webapp。 我计划为它实现基于令牌的身份验证。我正在阅读有关它的内容,并碰到X-Auth代币和Bearer Tokens。

我看不出它们之间有多大区别,因为它们都是带有生成标记的标题。但我想以标准的方式做到这一点。

其中哪一项更适合我的需要。如果不是,哪种类型的令牌更合适?

2 个答案:

答案 0 :(得分:0)

我只是回答我自己的问题,以防它对别人有用。

我们最终使用带有Bearer令牌的Authentication头实现了一个进程。它基本上是您向潜在用户/客户提供的令牌。

您可以通过身份验证端点发布的一种方法是,如果传递正确的用户名或密码,则可以使用Bearer令牌进行响应。

继续对受保护资源的请求然后将在Authentication头中使用该令牌。

关于它的一点参考: https://tools.ietf.org/html/rfc6750

这里有一个很好的解释:

What are Bearer Tokens and token_type in OAuth 2?

希望它有所帮助。

答案 1 :(得分:-1)

我认为对此没有普遍的答案。首先,我怀疑你可能会将标题与标记混淆,所以让我们从这里开始吧。这是来自whireshark的片段,通常的HTTP GET方法:

GET /22789/610/144208714.mp4?token2=1404763288_a4b48d3fc547294893b3b8d817ef1c59&aksessionid=690e90bada20cdc5 HTTP/1.1
Host: pdl.vimeocdn.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language: en-US,en;q=0.5
DNT: 1
Range: bytes=427217-
Referer: http://vimeo.com/59253805
Cookie: aka_debug=cpcode:133150~clientip:87.81.132.48~ghostip:176.255.247.64~requestid:57d39e3~time:1404762182~ghostforwardip:~edgecache:cache-hit
Connection: keep-alive

注意令牌如何位于GET请求行主体中的问号后面。随后是什么'?'被称为请求参数,由您命名此参数'token','token2'或'mysuperhash'取决于您。在此特定示例中,令牌以类似unix的时间戳开头,因此如果您尝试将此确切请求粘贴到浏览器,则链接已过期将拒绝访问。

第一行后面的每一行基本上都是一个标题。虽然有一些传统的标题(例如主机或时间)​​,但完全取决于您如何命名您希望用于特定目的的标题。

在nginx和Apache服务器中,您拥有始终存在的变量,您可以通过这些变量轻松访问参数和标题。此外,nginx允许您配置基于令牌的条件访问,这样您甚至不需要成为程序员(除了能够正确获取配置行),您可以查看:http://nginx.org/en/docs/http/ngx_http_secure_link_module.html

如何构造该令牌是一种特定的架构决策。您可以根据时间,整个URI,客户端的IP地址等来保护访问。通常情况下,它比看起来更复杂,因为您需要考虑授权用户可能落后的接入网络中的许多可能性。在nginx的情况下,你受限于md-5哈希。这是一种老旧的快速方法,但它被认为是妥协的,所以如果你想要更好的保护,你可以在自己的实现中考虑sha-1(在openssh包中提供库)。