使用Wireshark,我看到iOS飞利浦远程电视应用程序与我的飞利浦电视交谈,运行他们的新os Saphi发送一些HTTP请求,授权标题如下:
授权:基本1:ZmVay1EQVFOaZhwQ4Kv81ypLAZNczV9sG4KkseXWn1NEk6cXmPKO/MCA9SRYSLVLCFMNNE4C4C4PxZTOOWVHVA==
我相信“1”是用户ID,它与带有“:”的长密码分开。
在维基百科中,我读到授权字段的构造如下:
>
用户名和密码用一个冒号(:)组合。
生成的字符串使用Base64的变体编码成八位字节序列。
所述授权方法和空间(例如B-SB)。"Basic")随后被前缀到编码html" target="_blank">字符串中。
例如,如果浏览器使用阿拉丁作为用户名,使用OpenSesame作为密码,则该字段的值是阿拉丁的base64编码:OpenSesame,或QWXHZGRPBJPCGVu2VzyW1L。
然后,授权标题将显示为:
授权:基本QWXHZGRPBJPCGVU2VZYW1L
因此,我想知道这个应用程序中使用的授权头是否有效-跳过上面的编码步骤2,看起来像什么?
您发布的标题违反了RFC 7235,这禁止在授权令牌中使用冒号(:):
Authorization = credentials
credentials = auth-scheme [ 1*SP ( token68 / #auth-param ) ]
token68 = 1*( ALPHA / DIGIT /
"-" / "." / "_" / "~" / "+" / "/" ) *"="
正如您正确指出的,基本身份验证在组合用户名和密码后编码为Base64。您发布的示例在冒号后包含有效的Base64,但它会被解码为一些二进制垃圾。
这个飞利浦软件的开发人员很可能错误地将自定义身份验证方案标记为Basic
。这不是一个罕见的错误。一个典型的情况是在没有Base64的情况下发送令牌,如在Basic MySECToken123
中。
我目前正在尝试设置一个对一个具有基本授权的REST API(Cloudsight)的POST请求。到目前为止我的代码是: null null 当我尝试并运行它时,我得到错误:Uncatted SyntaxError:无法对“XMLHttpRequest”执行“set requestHeader”:“authorization:”不是有效的HTTP头字段名。 有人知道代码出了什么问题吗?我对Java
我想在客户端和节点上使用JQuery设置一个基本的HTTP身份验证。服务器端的js。我已在服务器端发出以下Ajax请求以设置头: 我希望使用基本身份验证模块在服务器端使用: 但是,这样做,我会遇到一些问题: 我看不到在飞行前选项HTTP请求中设置了标头: 选项/服务器HTTP/1.1 主机:服务器。com 连接:保持活动状态 访问控制请求方法:获取 来源:null 用户代理:Mozilla/5.0
我正在使用Spring Boot检查Spring Security默认表单登录页面的超文本标记语言代码。显然,表单中有3个字段(用户名、密码和隐藏的CSRF令牌),这是一个POST请求。 在这种情况下,我假设HTTP请求不会使用授权头—我没有看到任何JavaScript代码或类似的代码将username:password组合编码为Base64编码字符串并将其放入HTTP授权头。 但是当我查看Goo
我想知道JWT令牌最合适的HTTP头类型是什么。 最流行的类型之一可能是。例如: 它处理两个参数,例如登录名和密码。因此,它与JWT令牌无关。 此外,我听说过不记名类型,例如: 然而,我不知道它的意思。它和熊有关吗? 在HTTP头中是否有使用JWT令牌的特殊方法?我们应该使用,还是应该简化并仅使用: 谢谢 编辑: 或者,可能只是一个HTTP头:
当击中Postman的API时,我得到了这个错误。 https://account-perf.myglobal.com/v1/users/00uk0khprrme7gzou0h7/credentials/change_password 内容类型:application/json 授权:承载n7mbkw74jsubd7rauhptdnre 邮政 Web服务调用以生成令牌-
HTTP规范说; HTTP访问身份验证在“HTTP身份验证:基本和摘要访问身份验证”[43]中进行了描述。如果请求经过身份验证并指定了一个领域,则相同的凭据应该对该领域内的所有其他请求有效(假设身份验证方案本身不需要其他凭据,例如根据质询值变化的凭据或使用同步时钟)。 我真的不明白这意味着什么,但这是我的情况,这里有反对 HTTP 规范的东西吗?我使用 Java Rest 服务 客户端使用HTTP