lambda 函数中的 python 和 python-jose 错误

Posted

技术标签:

【中文标题】lambda 函数中的 python 和 python-jose 错误【英文标题】:error with python and python-jose in lambda function 【发布时间】:2019-06-22 13:21:27 【问题描述】:

我对 python 有点陌生,以前从未使用它来验证 jwt 令牌。

我正在编写一个 lambda 函数。我确定问题很简单,但似乎无法解决。

我不断收到此错误:


  "errorType": "JWTError",
  "errorMessage": "Error decoding token headers.",
  "stackTrace": [
    "  File \"/var/task/index.py\", line 43, in handler\n    claims = token_verifier(keys, token)\n",
    "  File \"/var/task/index.py\", line 74, in token_verifier\n    headers = jwt.get_unverified_headers(token)\n",
    "  File \"/var/task/jose/jwt.py\", line 193, in get_unverified_headers\n    return get_unverified_header(token)\n",
    "  File \"/var/task/jose/jwt.py\", line 173, in get_unverified_header\n    raise JWTError('Error decoding token headers.')\n"
  ]

我正在我的 Mac 上为 3.7 创建一个虚拟环境,并且有一个非常简单的 requirements.txt 文件:

python-jose
configparser
ecdsa
future
pyasn1
rsa
six
urllib3

我的代码在第一行就崩溃了:

    headers = jwt.get_unverified_headers(token)
    kid = headers['kid']

...

实际的令牌值是什么并不重要,这显然是我使用库的方式的问题。应该是有些不兼容吧。我用谷歌搜索过,没有看到其他人有这个问题,所以这一定是我正在做的非常愚蠢的事情:)

有人可以帮忙吗?谢谢。

【问题讨论】:

会不会是文件编码问题?例如输入是 UTF-8,代码需要 ASCII(或其他方式,或其他编码)。 norok2 所说的。看看这个 GH 问题 (github.com/jpadilla/pyjwt/issues/319),也许它也适用于你的情况? 谢谢。仍在试图弄清楚。不确定这是一个编码问题,但我会继续尝试一些事情。我将令牌粘贴到 jwt.io 中,它完全可以解码并以纯文本形式显示标题。这令人沮丧。 不出所料,我的问题很容易解决。我传入了一个无效的字符串。按预期工作。 【参考方案1】:

出现错误是因为您的令牌结构无效。令牌应采用此abc.abc.abc 的形式。 Header、Payload 和 Signature 用 3 个点分隔。

【讨论】:

你是对的。我了解令牌需要采用的格式,但我在那里有额外的字符并且没​​有意识到这一点。但是,最终,这是我的错,令牌是坏的。谢谢!

以上是关于lambda 函数中的 python 和 python-jose 错误的主要内容,如果未能解决你的问题,请参考以下文章

Python(lambda)中的匿名函数

lambda 函数中的 python 和 python-jose 错误

lambda 比 python 中的函数调用慢,为啥

Lambda 函数在 Python 3 和 Python 2 中的行为不同

等效于 Java 中的 Python 的 lambda 函数?

python中的lambda函数