目前有一个跨两个应用程序服务器和一个单独的数据库服务器的实时环境。总共 3 台服务器。两个应用程序服务器都向数据库服务器写入和读取数据。
现在我在 Laravel Passport 中看到的问题是当我创建个人访问令牌时。它似乎只在原始发行服务器上进行身份验证(或者在第一次提交时命中的第一个服务器)...我现在有一个循环设置 - 所以基本上所有其他请求都说我未经身份验证...
如果我的两个应用程序服务器(相同)正在从同一数据库服务器读取......那么问题是什么? Laravel Passport 是否在文件中存储某些内容?不是 100% 确定护照的来龙去脉...
还将注意到我的会话存储在数据库服务器上的 Redis 中,两个应用程序服务器都指向该服务器。
编辑:
还要补充一点 - 当我切换域时,它似乎发回未经身份验证的信息? ...假设在令牌中它与发行域有关?不是 100% 确定......但如果有人有任何见解请告诉我!
谢谢 花旗
Laravel Passport 从位于
storage/oauth-private.key
和 storage/oauth-public.key
中的文件生成访问令牌
这些文件位于服务器上。如果您执行了
passport:install
命令,那么在其他服务器上将无法验证用户访问令牌
希望这有帮助
每个人仍在为此苦苦挣扎,我遇到了这个问题,经过快速搜索后偶然发现了这个拉取请求https://github.com/laravel/passport/pull/683, 您可以将以下键添加到您的 .env 文件中,然后您的应用程序将使用 .env 文件中的这些键,而不是从实际文件中读取。
PASSPORT_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIJJ...\n-----END RSA PRIVATE KEY-----"
PASSPORT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIICI...\n-----END PUBLIC KEY-----\n"
确保使用双引号“”括住您的密钥,否则您将看到解析错误,这样您就可以将服务器密钥从第一个服务器复制到 .env 文件,然后对您的任何新服务器使用相同的密钥添加,完美运行。