我在玩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/

10-12 01:37