使用公钥的 Firebase/JWT 加密

问题描述

嗨,我正在用 PHP 开发具有应用程序授权服务器 (AS) 和一些客户端应用程序 (CA) 的架构。 登录 CA 的用户将通过 AS 上的 SSO 登录,成功后将重定向到 CA,其中一些参数存储在 JWT 令牌中。 我生成了一对密钥来实现非对称加密,其中私有是秘密的并存储在 AS 上,而公共在 CA 周围共享。

我正在为 PHP 使用 Firebase/JWT 库,并且我能够使用 JWT::encode($this->token,$privateKey,'RS256') 和 AS 私钥对 AS 生成的令牌进行编码。 以同样的方式,CA 接收令牌并使用 JWT::decode($jwt_token,$key,array('RS256')) 一切正常...

但我想在开头介绍另一个安全步骤。 我想在 CA 中生成一个令牌(使用相同的库),包含引用 CA 信息(如应用程序代码和其他要发送到 AS 的 CA 参数),然后再重定向到 AS 进行登录,我想用 public 加密这个令牌AS 的共享密钥,这样只有 AS 才能用自己的私钥解密令牌。 简单来说,Bob(CA) 用 Alice (AS) 的公钥加密一条消息,这样只有 Alice 才能用她自己的私钥解密。

我正在尝试使用相同的方法来做到这一点 JWT::encode($this->token,$_ALICES_PUBLIC_KEY,'RS256')

但似乎 JWT::encode 方法只接受 PRIVATE 类型的键,我收到以下错误 PHP 警告:openssl_sign():无法将提供的密钥参数强制转换为私钥

感谢任何帮助。谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)