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