PyJWT 不适用于链接格式的 rs256

问题描述 投票:0回答:1

jwt 标头中的算法是“http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”, 但是当 pyjwt 在内部运行时:

alg_obj = self.get_algorithm_by_name(alg)
它提出:

NotImplementedError: Algorithm not supported

如果我在调试期间手动将 alg 替换为“RS256”,它就可以工作

为什么库无法识别链接格式的算法?

python encryption jwt cryptography
1个回答
0
投票

您似乎在 PyJWT 处理 JWT 算法时遇到了问题。 JWT 标头中指定的算法是“http://www.w3.org/2001/04/xmldsig-more#rsa-sha256”,它表示采用 SHA-256 哈希的 RSA。但是,PyJWT 希望以不同的格式指定算法,例如使用 SHA-256 哈希的 RSA 的“RS256”。

PyJWT 无法识别链接格式中的算法的原因可能是由于它遵守标准 JWT 算法标识符,这些标识符通常表示为“RS256”、“HS256”等字符串,遵循 JWT 规范。

要解决此问题,您可能需要确保令牌标头中的 JWT 算法符合 PyJWT 期望的标准字符串表示形式。如果您可以控制 JWT 的生成,请考虑使用“RS256”而不是完整的 URL。如果您从使用 URL 格式的外部源接收 JWT,则在验证或解码令牌之前,您可能需要预处理 JWT 标头,将算法转换为 PyJWT 识别的格式。

以下是您可以执行的操作的摘要:

生成 JWT:如果您要生成 JWT,请确保直接将算法指定为“RS256”,而不是使用 URL 格式。

预处理 JWT:如果您接收的 JWT 具有 URL 格式中指定的算法,请在将 JWT 标头传递给 PyJWT 之前对其进行预处理。您可以编写一个函数将算法从 URL 格式转换为 PyJWT 识别的标准字符串格式。

通过遵守标准 JWT 算法标识符,您可以确保与 PyJWT 和其他期望以特定格式表示算法的 JWT 库的兼容性。

© www.soinside.com 2019 - 2024. All rights reserved.