Я развертываю свое приложение laravel в AWS Elastic Beanstalk и сталкиваюсь с проблемой сохранения ключей oauth для паспорта laravel.
Я прошел через это и это. Хотя вариант S3 звучит разумно, я все же хотел более безопасный способ и хотел получить секретный менеджер от AWS.
Поскольку паспорт laravel предоставляет возможность загружать ключи из пользовательской папки, Я решил, что могу использовать AWS PHP SDK для получения секретного ключа, записи его в storage/app/oauth-public.key
и storage/app/oauth-private.key
и загрузки паспорта оттуда.
Этот подход работает нормально после развертывания в beanstalk, но является ли папка storage/app
безопасным местом для создания oauth.*.key
файлов? или есть способ лучше / безопаснее?
Ниже приводится моя функция загрузки в Providers/AuthServiceProvider.php
.
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(now()->addDays(5));
// load keys from aws secret manager if they don't exist
if(!file_exists(storage_path().'/app/oauth-public.key') && !file_exists(storage_path().'/app/oauth-private.key')) {
$keys = json_decode($this->getPassportKeys());
$public_key = implode("\n", explode('\n', $keys->PASSPORT_PUBLIC_KEY));
Storage::put('oauth-public.key', $public_key);
$private_key = implode("\n", explode('\n', $keys->PASSPORT_PRIVATE_KEY));
Storage::put('oauth-private.key', $private_key);
}
Passport::loadKeysFrom(storage_path().'/app');
}