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

时间:2019-02-21 03:24:50

标签: php laravel laravel-passport jwe

我正在构建一个包含3个服务器的应用程序。第一个是我的Authorization server,第二个是我的Database server(API),最后是我的front-end server。我想使用非对称加密来对我的Authorization server生成的访问令牌进行加密,以便不泄露敏感数据,并且也可以将其发送到我的API并验证用户是否在发出请求实际上就是他们声称的身份。 Laravel Passport中是否有任何东西可以使这种实现成为可能,还是最好使用第三方库,例如PASETOPHP JWT Framework

当前,当我向Api请求

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

我希望通过非对称加密实现的是在对API的每次请求之前消除对Auth server的调用,并且我读到可以使用非对称加密来实现这一目标。

1 个答案:

答案 0 :(得分:0)

为解决我的问题,我最终使用JWCrypto库对访问令牌中的数据进行加密。 JWE声明中对数据进行了加密。

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

我后来使用python库Authlib JOSE Guide对令牌进行解密。我正在考虑切换到{{3}},因为它似乎拥有更广泛的社区和支持。

{{1}}