有没有一种方法可以不对称地加密使用Laravel Passport创建的访问令牌



我正在构建一个由3服务器组成的应用程序。第一个是我的Authorization server,第二个是我的Database server(API),最后是我的front-end server。我想使用不对称的加密来加密我的Authorization server生成的访问令牌,以便不妥协敏感的数据,也可以将其发送到我的API并验证提出请求的用户实际上是他们声称自己是谁。Laravel Passport中是否有任何可以使此实现成为可能的东西,或者使用Paseto或PHP JWT Framework等第三方库?

更好

当前我向API请求

  1. API致电Authorization server使用访问令牌验证用户。
  2. Auth server验证了用户
  3. 如果用户验证,API会提供我们要求的资源,否则它返回验证错误。

我想通过不对称加密实现的目标是消除对我的Auth server的呼叫,然后再对API请求,我读到我可以使用不对称的加密来实现此目标。

为了解决我的问题,我最终使用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 SimpleJWTJWE($headers, $claims);
  $jwe_encrypted = $jwe->encrypt($foreing_server_public_key);

i后来使用Python库Jwcrypto解密令牌。我正在考虑改用Authlib Jose指南,因为它似乎具有更广泛的社区和支持。

//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}

最新更新