PHP 使用 Firebase JWT 实现瘦身
PHP Slim with Firebase JWT
我正在尝试将 Firebase Auth 与 PHP Slim (JWT) 集成,但没有成功。我使用我的 firebase 用户登录并正确保存我的令牌。然后我这样设置 midleware.php:
$app->add(new Tuupola\Middleware\JwtAuthentication([
"ignore" => ["/countries","/faqs"],
"secret" => $secrets,
"secure" => false
]));
$secrets 是来自 securetoken@system.gserviceaccount.com 的孩子。但是我一直收到错误 401 未授权。
当我尝试使用自定义 $secret 和自定义 jwt 时,相同的代码有效。 Firebase 是否需要 JwtAuthentication 中的额外内容?
所以问题是来自 Tuupola 的 JwtAuthentication 如何处理孩子(实际上是孩子 - 来自 googles public keys 的密钥 ID)。
在原版 PHP 中,我必须从 google 中获取秘密,然后在使用前将其拆分为数组。但是,这一切都是Tuupola内部完成的,这导致了我的问题。
Slim 4 与 Firebase Auth 一起使用的正确中间件如下:
return function (App $app) {
$app->add(CorsMiddleware::class);
$container = $app->getContainer();
$rawPublicKeys = file_get_contents('https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com');
$keys = json_decode($rawPublicKeys, true);
$app->add(new Tuupola\Middleware\JwtAuthentication([
"ignore" => ["/api/records/countries","/faqs","/","/answer"],
"algorithm" => ["RS256"],
"header" => "X-Authorization",
"regexp" => "/Bearer\s+(.*)$/i",
"secret" => $keys,
"secure" => false
}
]));
};
我正在尝试将 Firebase Auth 与 PHP Slim (JWT) 集成,但没有成功。我使用我的 firebase 用户登录并正确保存我的令牌。然后我这样设置 midleware.php:
$app->add(new Tuupola\Middleware\JwtAuthentication([
"ignore" => ["/countries","/faqs"],
"secret" => $secrets,
"secure" => false
]));
$secrets 是来自 securetoken@system.gserviceaccount.com 的孩子。但是我一直收到错误 401 未授权。
当我尝试使用自定义 $secret 和自定义 jwt 时,相同的代码有效。 Firebase 是否需要 JwtAuthentication 中的额外内容?
所以问题是来自 Tuupola 的 JwtAuthentication 如何处理孩子(实际上是孩子 - 来自 googles public keys 的密钥 ID)。
在原版 PHP 中,我必须从 google 中获取秘密,然后在使用前将其拆分为数组。但是,这一切都是Tuupola内部完成的,这导致了我的问题。
Slim 4 与 Firebase Auth 一起使用的正确中间件如下:
return function (App $app) {
$app->add(CorsMiddleware::class);
$container = $app->getContainer();
$rawPublicKeys = file_get_contents('https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com');
$keys = json_decode($rawPublicKeys, true);
$app->add(new Tuupola\Middleware\JwtAuthentication([
"ignore" => ["/api/records/countries","/faqs","/","/answer"],
"algorithm" => ["RS256"],
"header" => "X-Authorization",
"regexp" => "/Bearer\s+(.*)$/i",
"secret" => $keys,
"secure" => false
}
]));
};