我在玩DEX和openldap。当我在浏览器中获得 token 并将其与生成的公钥一起放入JWT调试器时,它不会验证签名。我正在尝试逐步完成DEX的代码,但是调试工具在我的计算机上并没有真正起作用。我求助于日志语句。我真的找不到在哪里可以观察到 token 的签名,以查看程序是否使用了我提供的密钥。哪个函数实际上对 token 进行签名,我如何观察它用于签名的密钥?
最佳答案
可以从DEX“密钥”端点读取密钥,可以从以下端点获取密钥:
http://your.dex.com/.well-known/openid-configuration
通常,它类似于:
http://your.dex.co/keys
之后,可以使用以下程序提取公钥:
https://play.golang.org/p/wVusucNGDI
这些密钥之一将能够验证 token :
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)
关于go - DEX LDAP连接器 token 签名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52673491/