我几乎可以肯定它必须已经存在于某个地方,我只是不知道它的用语,因为我找不到它。
我有一个CakePHP应用程序。除了不是NodeJS,它是CakePHP并不是很重要。
我也有一个NodeJS应用程序。
到目前为止,这两个应用程序都可以实现它们应有的功能。
CakePHP应用程序具有一个用户会话,它会跟踪已登录的用户,我可以轻松确定当前用户是否在此应用程序中得到了授权。很棒的东西。
有时前端将调用NodeJS应用。那也很漂亮。但有时,此NodeJS应用需要提供特定于该用户的某些内容。 NodeJS和CakePHP在不同的子域上。
如何安全地告诉NodeJS服务器用户是谁?
它如何在我的脑海中发挥作用
显然不希望以明文形式传递某些标识符。我的第一个想法是加密一个变量(为该会话生成的UUID,由CakePHP应用临时存储在数据库中),将其发送到前端,在需要访问该服务器时将其传递给NodeJS,然后然后让NodeJS服务器解密。将使用该解密值,询问PHP是否具有与此变量相关的当前会话,并且是否确实让NodeJS知道是谁,以便NodeJS可以启动其自己的会话。
user_id
相关联,然后将所有使用常量X密钥加密的UUID传递给前端为了诱使NodeJS服务器认为您不是用户,您必须拥有一个经过适当加密的UUID,该UUID最多仅在CakePHP服务器上的用户会话时间内存在。
但是显然,跨不同系统的加密-解密显然存在很多问题。
这种事情当然必须已经由某人处理。在不同应用程序中基本共享会话的模式是什么?
答案 0 :(得分:2)
您需要JWT或JSON Web令牌。它们是专门为此https://jwt.io/introduction/
令牌是带签名的字符串,可能包含用户的身份和“声明”,提供了为用户提供角色,权限或其他类似授权的方式。