RESTAPI认证-进一步澄清

RESTAPI认证-进一步澄清,api,rest,authentication,cookies,http-authentication,Api,Rest,Authentication,Cookies,Http Authentication,我已经阅读了很多RESTAPI身份验证线程,试图拼凑出它是如何工作的。 似乎有两大阵营,“只需使用HTTP基本/摘要身份验证及其相关的HTTP头,每次发送用户密码”和“针对URL进行一次身份验证,获取令牌,存储令牌,然后随每个请求一起发送”。每个人都同意不使用会话和使用HTTPS,这很公平 我只是希望浏览器上的用户登录后能够通过身份验证,而不必单独向API进行身份验证。大多数情况下,我希望我的Web服务能够自由访问搜索等内容,并且只需要在某些位置对创建/编辑/删除操作进行身份验证。前端只是用户的

我已经阅读了很多RESTAPI身份验证线程,试图拼凑出它是如何工作的。 似乎有两大阵营,“只需使用HTTP基本/摘要身份验证及其相关的HTTP头,每次发送用户密码”和“针对URL进行一次身份验证,获取令牌,存储令牌,然后随每个请求一起发送”。每个人都同意不使用会话和使用HTTPS,这很公平

我只是希望浏览器上的用户登录后能够通过身份验证,而不必单独向API进行身份验证。大多数情况下,我希望我的Web服务能够自由访问搜索等内容,并且只需要在某些位置对创建/编辑/删除操作进行身份验证。前端只是用户的浏览器,通过ajax调用调用服务

我的问题是:

  • 如果您已经在站点上使用表单身份验证,那么如何最好地设置HTTP身份验证头?您是否需要在您的登录表单上添加一点jQuery(如此已接受的答案),以便您也对API进行身份验证并存储,即设置一个/API/authenticate部分,该部分基本上只检查您的HTTP身份验证详细信息,以便将其存储在浏览器中

  • 如果您取回一个令牌并发送它,而不是您的用户/传递每个请求,您将它存储在哪里?每个人都说不要使用cookies,但是浏览器在哪里?你能存储这样的东西吗?我可以理解,在智能设备上,你有一个钥匙圈,或者在应用程序中,你可以在某个地方存储钥匙圈,但不能在浏览器中

  • 我看到的其他选择是,我认为,基本上写你的web应用程序,让它代表用户向API发送请求(因此你通常使用表单进行身份验证,然后web应用程序进行API调用,发送用户凭证,可以存储),而不是直接来自用户。这似乎需要做很多额外的工作来解决这个问题,如果一个人决定不完全使用RESTful,那么就可以通过一个会话巧妙地绕过这个问题,而且还必须存储身份验证细节

    我是不是最好不去打扰完全的休息,因为它并不真正适合这个目的,并且使用一个会话?看起来容易多了