0

我正在玩 DEX 和 openldap。当我在浏览器中取回令牌并使用我生成的公钥将其放入 JWT 调试器时,它不会验证签名。我正在尝试单步调试 DEX 的代码,但调试工具并不能在我的计算机上运行。我已经诉诸于日志语句。我真的找不到在哪里可以观察到令牌的签名,以查看程序是否正在使用我提供的密钥。哪个函数实际签署了令牌,我如何观察它使用什么密钥来签署?

4

1 回答 1

1

可以从 DEX “keys”端点读取密钥,该端点可以从以下位置获取:

http://your.dex.com/.well-known/openid-configuration

通常,它会是这样的:

http://your.dex.co/keys

之后,可以使用以下程序提取公钥:

https://play.golang.org/p/wVusucNGDI

这些密钥之一将能够验证令牌:

from jose import jwt

key = '''-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArT9AtIlC8MxhLYhz8ODH
...
+QIDAQAB
-----END PUBLIC KEY-----'''

encoded = 'eyJh...ocw'

audience = ''
if audience == "":
    opts = {"verify_aud": False}
else:
    opts = {}
opts['verify_at_hash'] = False
decoded = jwt.decode(encoded, key, audience=audience, options=opts)

print(decoded)
于 2018-11-27T19:51:18.700 回答