2013-10-12 36 views
38

我是Restful API概念的新手。通过SSL进行REST API的HTTP基本认证

我正在为在线商店设计一个宁静的api。

我没有正确理解通过SSL的基本http认证的概念。

这是否意味着,对于每一个请求,用户将不得不再次输入他/她的用户名和密码?

请问有人可以详细解释它是如何工作的以及它是如何使用的?

在此先感谢。

回答

60

基本认证方式就是以用户为标准的HTTP报头和用base64编码传:。如果你验证您的呼叫REST API基本QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

http://en.wikipedia.org/wiki/Basic_access_authentication):

授权通过这个标题通过非ssl连接,问题是中间的任何人都可以从auth头解码你的用户名和密码。

要确保您的密码安全发送,而不是正常的HTTP连接,您必须使用HTTPS。 HTTP和HTTPS之间唯一的区别在于HTTPS使用基于TCP/IP而不是普通TCP/IP的SSL/TSL安全协议。

现在这有一个缺点,即建立HTTPS连接在CPU上比普通HTTP连接更昂贵。 非常清楚,如果您想通过此标头对每个请求进行身份验证,则应该让您的其他API仅用于HTTPS连接。

+1

授权头文件是否必须随每个请求都发送到服务器? –

+3

是的。因为Rest api没有状态(例如:登录的用户状态)。我认为,对于大型应用程序,您必须拥有一个身份验证模块或过滤器,或者像OAuth。我当然也会尝试去理解OAuth 2,例如对于任何使用你的API的人来说,这是一个更完整和通用的解决方案。 –

+0

而且头部会自动缓存并通过我的浏览器一次又一次地发送?或者我需要通过api代码发送标题? –

相关问题