首页 > 解决方案 > 存储 JWT 令牌以供多域使用的最佳方法

问题描述

我想允许用户使用 jwt-authentication (aam-plugin )。

所有朋友域都安装了朋友插件。此插件为朋友发送一个 POST 请求到特定 aam 插件生成的端点:my-domain.com/wp-json/aam/v2/authenticate 与用户凭据。例如,响应将用户特定的 JWT 用于向friend1-domain.com 进行身份验证。用户可以做所有神奇的事情,朋友插件允许从friend1-domain.com 做的事情。

我想将身份验证 JWT 安全地存储在用户浏览器中,以便用户可以跳转到另一个博客friend2-domain.com,在那里使用插件为朋友做更多的魔术人员,而无需新的身份验证(使用浏览器存储中的 JWT)。

怎么做?如果您可以用一些代码来说明您的答案,那就太好了。谢谢!

标签: wordpressjwt

解决方案


您必须使用 samesite=None 在您的域上设置 JWT cookie。发生的情况是,当您从friend1-domain.com 或friend2-domain.com 发出请求时,您的域中设置的jwt 现在不会根据最新浏览器版本与这些请求共享(最初默认情况下samesite 设置为none,出于安全原因,后来改为“Lax”)。当 samesite 设置为 None 时,意味着第三方域可以发送此 cookie,同时为您的域发出可由您的域授权的请求。你可以在这里阅读更多关于这个samesite cookie以及如何使用它的信息https://web.dev/samesite-cookies-explained/

您还必须在设置 samesite=None 时设置 secure=True。


推荐阅读