基本的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 。 因此,从您的应用程序捕获该标题下的令牌,并处理您需要做的事情。

你可以做的另一件事是通过POSTparameter 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。

Interesting Posts