小编Mik*_*key的帖子

AWS 认知。如何在Python中解码JWT

我想在 Django 应用程序中使用 Cognito 身份提供商 (Facebook) 对用户进行身份验证。当用户登录时,他会被重定向到带有 和 的access_token主页id_token。这些是 JWT 令牌。我需要对它们进行解码以获取有关用户的信息。如何实现?

我尝试使用jwt图书馆。许多资源说我需要将 PUBLIC_KEY 转换为 PEM 格式来解码这些令牌。我访问了: https://cognito-idp.{aws-region}.amazonaws.com/{user-pool-id}/.well-known/jwks.json 并得到了字典:

{
  "keys": [
    {
      "alg": "RS256",
      "e": "AQAB",
      "kid": "cKgEILaVv5nXrJNBtfdaEVfA9Sn+GNdMpXbO58Li+eLyiA=",
      "kty": "RSA",
      "n": "kpE2A8GfBoDiLcnHme9WLSIMezPAXg8ibZ8hIa4GvmJAT1LmR9CDN0Yt-JlKE_gH73HbldpgqCbflygbcZtdn1RMdfafdafaQq3sOY0RJqC8-jdZTWb0Cbw2E-fmmOtgHqz11ZlbqaZYpcRYvyNwuWQs05kikzaUudwp05TTd4N0VznbMMm9peu_Ghw7nqlgkvU8WWO6tD_LzF8VDTroKdGAnrh3kwRVY8le5JwzoGMDVbNtOQFwla8yyxNfRRFQVkcnOxb14BhrO3N8ZsI-E9eB9ZbUNt27DxAMjxsNzERSUx3gm7zq-d2SYyZ31P_FNxOTS0RlKPN69Jlscack7ghM_nZdnw",
      "use": "sig"
    },
    {
      "alg": "RS256",
      "e": "AQAB",
      "kid": "wMYp8SsLhXBtE2wbYK1hQfdafadfadeiYkDYXctg1GkdmTTFs+I=",
      "kty": "RSA",
      "n": "i_W1pexAB1FhY3oJ0jEGeks1b8jCFZOWU7PAvzi3kdeP7JR2IP91W8FV9ou6gT1dn6F8ZbDvJEF9PNJkmQxwvHkoeYzgaOhNFXBU5Jfv20rQfdafa56PufchgtGndaI22TnnPDg_L5UElaljJvmzTcDTk0xHqJRxhw2LAqembfij5TV_8mSHpqIbWvppOTqT7s3zI7DdfDLDOX7CHFRht3uesX5drVo-S9IsJCJ2l3rCChTCy8e32YY68iHH40t5vVPkuqr1ffMfKYkyXC3urliCawRKnrk62ngAskjRiAihmIl8E79_Ddfn5O5RYqLY71Q4T6Epep4C1ygjlBrToFd8Haw",
      "use": "sig"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我不知道从这里能抓到什么。

python decode jwt amazon-cognito

4
推荐指数
1
解决办法
9101
查看次数

如何通过传递命令行参数测试 __name__ == "__main__" 是否?

嗨,我想测试我的可执行模块main.py。在这个模块中有main()一个接受两个参数的函数:

# main.py

def main(population_size: int, number_of_iterations: int):
    ...
Run Code Online (Sandbox Code Playgroud)

在这个模块的底部有一个接受命令行参数并执行main函数的逻辑:

# main.py

if __name__ == "__main__":
    # create parser and handle arguments
    PARSER = argparse.ArgumentParser()
    PARSER.add_argument("--populationSize",
                        type=int,
                        default=-1,
                        help="Number of individuals in one iteration")
    PARSER.add_argument("--numberOfIterations",
                        type=int,
                        default=-1,
                        help="Number of iterations in one run")
    # parse the arguments
    ARGS = PARSER.parse_args()

    main(ARGS.populationSize, ARGS.numberOfIterations)
Run Code Online (Sandbox Code Playgroud)

我想测试传递的命令行参数。我的测试方法不起作用:

# test_main.py

@staticmethod
@mock.patch("argparse.ArgumentParser.parse_args")
@mock.patch("main.main")
def test_passing_arguments(mock_main, mock_argparse):
    """Test passing arguments."""
    mock_argparse.return_value = argparse.Namespace(
         populationSize=4, numberOfIterations=3)
    imp.load_source("__main__", "main.py")

    mock_main.assert_called_with(4, 3)
Run Code Online (Sandbox Code Playgroud)

我得到的错误 …

python unit-testing mocking argparse

2
推荐指数
1
解决办法
1286
查看次数

标签 统计

python ×2

amazon-cognito ×1

argparse ×1

decode ×1

jwt ×1

mocking ×1

unit-testing ×1