我正在玩 DEX 和 openldap。当我在浏览器中取回令牌并使用我生成的公钥将其放入 JWT 调试器时,它不会验证签名。我正在尝试单步调试 DEX 的代码,但调试工具并不能在我的计算机上运行。我已经诉诸于日志语句。我真的找不到在哪里可以观察到令牌的签名,以查看程序是否正在使用我提供的密钥。哪个函数实际签署了令牌,我如何观察它使用什么密钥来签署?
问问题
219 次
1 回答
1
可以从 DEX “keys”端点读取密钥,该端点可以从以下位置获取:
http://your.dex.com/.well-known/openid-configuration
通常,它会是这样的:
之后,可以使用以下程序提取公钥:
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 回答