有没有办法非对称加密使用 Laravel Passport 创建的访问令牌?

Is there a way to Asymmetrically encrypt access tokens created with Laravel Passport?

我正在构建一个包含 3 个服务器的应用程序。第一个是我的Authorization server,第二个是我的Database server(API),最后是我的front-end server。我想使用非对称加密来加密我的 Authorization server 生成的访问令牌,这样敏感数据就不会受到损害,并且我可以将它发送到我的 API 并验证发出请求的用户实际上是他们自称的人。 Laravel Passport 中是否有任何东西可以使此实现成为可能,还是使用像 PASETO or PHP JWT Framework 这样的第三方库更好?

目前,当我向 Api

发出请求时
  1. Api 调用 Authorization server 以使用访问令牌验证用户。
  2. Auth server 验证用户
  3. 如果用户验证,Api 提供我们要求的资源,否则 return 验证错误。

我想通过非对称加密实现的是在每次请求 API 之前消除对我的 Auth server 的调用,我读到我可以使用非对称加密实现这一点。

为了解决我的问题,我最终使用 SimpleJWT 库来加密访问令牌中的数据。数据在 JWE 声明中加密。

  $headers = ['alg' => 'RSA-OAEP-256', 'enc' => 'A128CBC-HS256'];
  $access_token = {"sub": "1234567890", "name": "John Doe", "iat": 1516239022}
  // Creating JWE object with headers and claims
  $jwe = new \SimpleJWT\JWE($headers, $claims);
  $jwe_encrypted = $jwe->encrypt($foreing_server_public_key);

我后来使用 python 库 JWCrypto. I am thinking about making the switch to Authlib JOSE Guide 解密令牌,因为它似乎有更广泛的社区和支持。

//Decrypting JWE
//Private key should be key pair of public key used to encrypt token
jwetoken.deserialize(jwe_encrypted, key=private_key)
//Validating Signature since passport signs tokens when generating them
jwstoken.verify(auth_public_key)
//Payload should contain encrypted data
data = json.loads(jwstoken.payload.decode())
>> {"sub": "1234567890", "name": "John Doe", "iat": 1516239022}