Security 基于内部/私有rest令牌的api身份验证应使用哪种类型的令牌?

Security 基于内部/私有rest令牌的api身份验证应使用哪种类型的令牌?,security,rest,Security,Rest,我正在实现一个webapp,它使用内部/私有restapi进行后端处理。 我计划为它实现基于令牌的身份验证。我读了一些关于它的东西,偶然发现了X-Auth代币和不记名代币 我看不出它们之间有什么区别,因为它们都是带有生成令牌的头。但是我想用标准的方法来做 哪一个更适合我的需要。如果不是,什么类型的令牌更合适?我认为没有通用的答案。首先,我怀疑您可能会混淆头和令牌,所以让我们从这里开始。这是一个代码片段,通常使用HTTP GET方法进行共享: GET /22789/610/144208714.mp

我正在实现一个webapp,它使用内部/私有restapi进行后端处理。 我计划为它实现基于令牌的身份验证。我读了一些关于它的东西,偶然发现了X-Auth代币和不记名代币

我看不出它们之间有什么区别,因为它们都是带有生成令牌的头。但是我想用标准的方法来做


哪一个更适合我的需要。如果不是,什么类型的令牌更合适?

我认为没有通用的答案。首先,我怀疑您可能会混淆头和令牌,所以让我们从这里开始。这是一个代码片段,通常使用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允许您基于令牌配置条件访问,这样您甚至不需要成为程序员。除了能够正确获取配置行之外,您可以看看:


如何构造该令牌是一个特定的体系结构决策。您可以根据时间、整个URI、客户端的IP地址等来保护访问。通常情况下,它比看起来更复杂,因为您需要考虑授权用户可能在访问网络时的许多可能性。在nginx的情况下,您受到md-5散列的限制。这是一个旧的好方法,但是它被认为是妥协的,所以如果你想要一个更好的保护,你可以考虑在你自己的实现库中的SHA-1在OpenSSH包中是可用的。 我们最终实现了一个使用身份验证头和承载令牌的过程。它基本上是你给潜在用户/客户的代币

一种方法是通过身份验证端点,如果他们传入正确的用户名或密码,您可以使用承载令牌进行响应

随后对受保护资源的请求将在身份验证头中使用该令牌

关于它的一点参考:

这里有一个很好的解释:


希望能有所帮助。

您是要针对您自己的系统还是第三方系统进行身份验证?@PM77-1我要针对我自己的系统进行身份验证。将令牌作为GET参数附加的错误做法,它们将进入日志!当您想使用令牌使服务器无状态时,使用cookie是无用的。请确保使用正确的授权类型,因为在当今的应用程序中,不向合作伙伴或开发人员公开api几乎是不可能的。保持内部应用程序的授权类型(客户端凭据、内部身份验证密码和第三方授权代码等)的清晰分离,有助于长期维护AuthN/AuthZ。