在后端 Web 服务位于单独的服务器上并且需要确定给定请求通过 APIM 网关身份验证和授权机制传递的情况下,验证 JWT 是否由特定 API Manager 实例发出的推荐方法是什么?
我知道 JWT 中的 header 字段包含一个“x5t”字段,它是对租户 key 存储中证书的编码引用,如下所述:
https://asankastechtalks.wordpress.com/2013/12/05/obtaining-certificate-used-to-sign-a-jwt/
由于后端 Web 服务位于单独的服务器上,我们是否需要以某种方式将公钥分发给它?另外,我们如何更新用于签署 JWT 的证书,因为它现在使用默认值?
最佳答案
x5t 中的数据不是整个证书,它只是一个哈希值,可以帮助您识别您拥有的证书是否相同。这意味着您确实需要将公共(public)证书上传到接收服务。
使用 https 可以在握手中检索公共(public)证书,然后客户端可以检查此证书是否由受信任的 CA 签名。但是,通过此验证,没有这样的机制,因此您不能只信任 CA,您必须信任每个公共(public)证书。
还有另一个可选 header “x5u”,其中包含指向公共(public)证书的 url 链接,但 APIM 未设置该值。
关于validation - 如何从 WSO2 API Manager 验证 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22408599/