最近我一直在阅读关于JWT / JWS和JWE的一些内容..然而..我仍然没有得到的一个部分是我非常确定我在哪里读过它们都应该是“无国籍”,这是真的吗? 我对此的看法是,JWS和JWE需要“收单方”和“发行方”之间的共享秘密才能解密有效载荷(以及CEK和不依赖于JWS或JWE的东西)。 所以我的问题是...... JWS和JWE是否真正无国籍?如果是这样,那么为什么我们不需要在“收购方”和“发行人”之间存储一个秘密?或者是用于从例如数据库获取我们的秘密来解密有效载荷和/或CEK的孩子?
澄清, 使用JWS和/或JWE解密和加密令牌时,发行方和收单方之间是否存在共享密钥?这个秘密存储在发行方的数据库中是为了能够解密有效载荷和/或CEK,还是用于以其他方式共享解密和加密的秘密/密钥?
此问题基于以下关于JWT,JWS和JWE的文章: https://medium.facilelogin.com/jwt-jws-and-jwe-for-not-so-dummies-b63310d201a3
答案 0 :(得分:0)
你是对的:根据你的申请,它可能是有状态的。 从我的观点来看,你可以指出两个案例:
使用第一个用例,可以使用颁发者公钥来检查JWS签名。这些密钥(广泛地说)是由发行方与各方共享的(这是Google和other authorities所做的)。当您想要将令牌(JWE)加密到该收件人时也是如此:您将使用其公钥。
使用其他用例,您的应用程序需要访问具有私钥的密钥集。这些键必须存储在某个地方(DB,环境变量......)。
当使用共享密钥(很少与第三方一起使用)时,您可能处于用例#2,因为发行者和接收者都必须管理共享密钥。