HTTP授权头中的auth-scheme的目的

时间:2016-05-22 10:42:39

标签: ruby-on-rails authentication authorization jwt

我对auth-scheme有疑问。我偶然发现了JSON Web Tokens和官方页面之一:

https://jwt.io/introduction/

他们使用

Authorization: Bearer <token>

过去,我对Authorization: JWT <token>很熟悉,并认为这是正确的,直到今天,我阅读了官方JWT网页,他们使用Bearer <token>代替。

我正在测试Knock Rails gem:https://github.com/nsarno/knock并且使用这个库,我能够使用随机身份验证方案向我的Rails API发出Postman请求:

example 1

我甚至可以完全摆脱身份验证计划:

example 2

但是,当我从Authorization标头中删除我的JWT令牌时,它会按预期返回401 Unauthorized响应,所以我知道它正在工作?

example 3

所以我开始思考......认证方案是否有目的?

库或Web服务器是否应该在授权标头中尊重/尊重/强制执行auth-scheme的正确用法?

我在寻求答案时遇到了这篇Stackoverflow帖子:

Custom HTTP Authorization Header

显示官方格式为:

credentials = auth-scheme #auth-param

给出的例子更奇怪:

Authorization: FIRE-TOKEN apikey="0PN5J17HBGZHT7JJ3X82", hash="frJIUN8DYpKDtOLCwo//yllqDzg="

我不知道这是否符合编程问题。我可以盲目地关注/使用第三方库。

授权方案的目的是什么?

我没有加密/计算机安全专家。

也许有人可以对这个问题有所了解(或者可能没有问题?)?

1 个答案:

答案 0 :(得分:1)

授权方案只是向服务器指示所遵循的凭据类型。客户端可以使用basic scheme

Authorization: Basic <base64(username:password)>

bearer计划

Authorization: Bearer <base64(JWT)>

Hawk计划

Authorization: Hawk id="...", ts="...", nonce="...", ext="...", mac="..."

或者它可以与服务器达成一致的任何其他方案。