当前位置: 首页 > 知识库问答 >
问题:

请求中的HTTP授权标头一致性

东郭京
2023-03-14

HTTP规范说;

HTTP访问身份验证在“HTTP身份验证:基本和摘要访问身份验证”[43]中进行了描述。如果请求经过身份验证并指定了一个领域,则相同的凭据应该对该领域内的所有其他请求有效(假设身份验证方案本身不需要其他凭据,例如根据质询值变化的凭据或使用同步时钟)。

我真的不明白这意味着什么,但这是我的情况,这里有反对 HTTP 规范的东西吗?我使用 Java Rest 服务

  • 客户端使用HTTP Basic使用HTTP Authorization头发送用户名:密码
  • 服务器发回令牌
  • 现在,客户端仍然使用HTTP Basic username:token为HTTP授权头中的进一步请求发送自定义授权令牌而不是密码

现在这感觉不太对,因为我真正使用身份验证令牌所做的并不是实际的HTTP基本授权。同样,请求之间对相同标头的使用也不一致。

但另一方面,我不希望为令牌交换创建另一个自定义标头。因为当你使用自定义头时,很难用测试工具对它们进行base64编码。和请求之间仍然不一致的报头。

注意:这些请求涉及不同的endpoint

你有什么建议?

共有1个答案

叶经略
2023-03-14

如果您这样做,因为您使用相同的标头,您不需要服务器端逻辑来区分登录是实际登录,而不是您的令牌吗?归根结底,HTTP授权已经是一个令牌(只是用户名/密码字符串的简单编码版本),因此在所有情况下,您都收到一个令牌,现在您必须对其进行解码,决定它是您的会话令牌之一,还是用户名/密码,因此检查两个“好令牌”来源。

我建议不要这么做,但不是因为你违反了标准,只是感觉有点复杂。

为什么首先需要将用户名/密码更改为令牌?您是否正在重定向到不再需要 HTTP 基本身份验证的终端节点?

 类似资料:
  • 我正在尝试从这个 API 调用中创建“UUID”,我正在使用 axios 和 vue.js。这是我的源代码。 但不幸的是,我得到了 在'访问XMLHttpRequesthttps://www.uuidtools.com/api/generate/v1'从原点'http://localhost:8080'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access c

  • 问题内容: 这是我的第一篇文章。 我刚刚开始学习Go和Angular,并且尝试将angular应用程序连接到go api。我已经写了这两本书,并且一直坚持找出问题的根源。我以为这是一个CORS问题,但是如果我在Angular http请求中不包含代码的标题行,它就可以正常工作。在这一点上,我只是想添加标题。授权代码尚未实现。 这两个应用程序都在本地运行,端口5000上的Go应用程序和4200端口上

  • 我目前正在尝试设置一个对一个具有基本授权的REST API(Cloudsight)的POST请求。到目前为止我的代码是: null null 当我尝试并运行它时,我得到错误:Uncatted SyntaxError:无法对“XMLHttpRequest”执行“set requestHeader”:“authorization:”不是有效的HTTP头字段名。 有人知道代码出了什么问题吗?我对Java

  • 问题内容: 我有一个react / redux应用程序,可从api服务器获取令牌。用户验证后,我想使所有axios请求都将该令牌作为Authorization标头,而不必手动将其附加到操作中的每个请求。我对React / Redux相当陌生,并且不确定采用最佳方法,也没有在Google上找到任何高质量的点击。 这是我的redux设置: 我的令牌存储在的redux存储中。 我对如何进行有点迷茫。我试

  • 我使用springfox 2.9.2我有这样的api: 女巫来自身份验证服务器。我尝试在swagger中首次调用此服务器,并将其传递给像上面这样的控制器请求。所以我做 在Swagger ui上,授权调用成功返回了令牌,但它没有将令牌添加到请求头中。它会产生 如果我像这样设置令牌:

  • 我正在使用 MEAN 堆栈用户注册和登录示例 我想将图像上传到Cloudinary,但收到此错误: XMLHttpRequest无法加载https://api.cloudinary.com/v1_1/xxxx/upload.请求标头字段授权不被预检响应中的Access-Control-Allow-Headers允许。 如何为Cloudinary的请求删除此标头?