基本的HTTP和承载令牌authentication
我目前正在开发一个REST-API,它是HTTP-Basic保护的开发环境。 由于真正的身份validation是通过令牌来完成的,我仍然试图弄清楚,如何发送两个授权头。
我试过这个:
curl -i http://dev.myapp.com/api/users \ -H "Authorization: Basic Ym9zY236Ym9zY28=" \ -H "Authorization: Bearer mytoken123"
我可以例如禁用我的IP的HTTP身份validation,但由于我通常在不同的dynamicIP环境下工作,这不是一个好的解决scheme。 所以我错过了什么?
试试这个在url上推送基本authentication:
curl -i http://username:password@dev.myapp.com/api/users -H "Authorization: Bearer mytoken123" ^^^^^^^^^^^^^^^^^^
如果上面的一个不行,那么你就没有任何关系了。 所以请尝试以下替代方法。
您可以以其他名称传递该令牌。 因为您正在处理您的应用程序的授权。 所以你可以很容易的使用这个灵活性来达到这个目的。
curl -i http://dev.myapp.com/api/users \ -H "Authorization: Basic Ym9zY236Ym9zY28=" \ -H "Application-Authorization: mytoken123"
注意我已将标题更改为Application-Authorization
。 因此,从您的应用程序捕获该标题下的令牌,并处理您需要做的事情。
你可以做的另一件事是通过POST
parameter passingtoken
,并从服务器端获取参数的值。 例如传递令牌curl post参数:
-d "auth-token=mytoken123"
标准( https://tools.ietf.org/html/rfc6750 )说,你可以使用:
- Form-Encoded Body Parameter: 授权:承载者mytoken123
- URI查询参数: access_token = mytoken123
所以有可能通过URI传递许多无线承载令牌,但这样做是不鼓励的(参见标准第5节)。
curl –
让curl自己找出validation方法,并使用远程站点声称支持的最安全的一个。 这是通过首先执行一个请求并检查响应头来完成的,因此可能会引起额外的networking往返。 这是用来代替设置一个特定的authentication方法,你可以使用–basic, – digest,–ntlm和–negotiate。