验证JWT令牌签名

时间:2019-06-19 08:43:24

标签: ios swift jwt rsa vapor

我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我得到一个身份令牌(访问令牌),它是Apple签名的有效JWT令牌。它将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。

在服务器上,我想验证发送的令牌确实由Apple签名,并且不是某些恶意用户通过验证令牌签名专门制作的。 Apple提供了HTTP端点来检索公用密钥,以执行此操作:Apple Documentation

但是,我不确定要查询该端点多长时间才能从API检索模数和指数,并构建公钥以验证签名。 是否足以查询一次并将其存储在服务器上以使用它呢?还是我需要在验证签名(针对每个受保护的路由)之前查询中间件中的HTTP端点? < / p>

基本上我不确定模数和指数是否会不时改变。

1 个答案:

答案 0 :(得分:5)

您可以这样做:

  • 获取一次公钥,将其存储在您的服务器上
  • 一个请求进入,尝试使用存储的公钥来验证签名
  • 如果失败,请再次获取公钥,将其存储
  • 尝试再次验证签名

这将使您在必要时立即知道已更改的公钥。

相关问题