我正在使用JWT
令牌来授权我的 API,在实现过程中,我发现令牌中的头信息和有效载荷总是以eyJ
开头。这表示什么?
我正在使用JWT
令牌来授权我的 API,在实现过程中,我发现令牌中的头信息和有效载荷总是以eyJ
开头。这表示什么?
JWT由base64url编码的JSON和一个以{"...
开头的JSON结构组成,编码时变为ey...
。
JWT头以{"alg":...
开始,然后变为eyJ...
您可以在在线编码器上尝试,输入{"alg"
并点击编码。结果将是eyJhbGciPSA=
恐怕上面的问题和答案有点过于广泛/确定。
你能检查的最好的是(仅)'ey',因为第一个JSON成员可能是其他东西,比如“typ”(而不是“alg”); 我不建议假设JSON成员的顺序(即使它们应该遵循规定的顺序 - 即允许现实世界中的异常/少量弹性的可能性)。
此外,尽管这可能不太可能 - 就特定实现生成的内容而言,可能会在打开(JSON对象)大括号字符之后(甚至在其之前!)出现一些空格 - 我不确定标准/RFC是否禁止此操作,但即使它只是JWT生成过程中的暂时性错误实例,理论上也可能发生; 因此,在进行JWT的完整验证之前,您最好仅检查'ey' - 作为快速烟雾测试,然后再进行更全面/完整的验证。
(F.Y.I.我相信微软的“身份平台”可能是“typ”在“alg”之前 - 如果我记得正确的话(?),但我不能发誓我曾经看到过这种情况 - 至少在某个时间点上。)
{"
开头,然后是一个字母。接受的答案是正确的。 - undefined