adsy2010 / laravel-api-credentials
此包旨在为API密钥提供加密层,以确保它们不会直接暴露在env或配置文件中
v1.0.0
2021-09-02 20:13 UTC
Requires
- php: ^7.2.5|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^6.5 | ^7.0
- illuminate/database: 5.8.* | ^6.0 | ^7.0 | ^8.0
- illuminate/support: 5.8.* | ^6.0 | ^7.0 | ^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
This package is auto-updated.
Last update: 2024-09-29 06:08:41 UTC
README
此包适用于与使用公共和秘密API密钥的任何服务一起使用。
可选地,一些服务允许将密钥添加到作用域中,此功能已包含在内。
例如,Stripe有两个标准密钥。一个可发布密钥和一个秘密密钥。可以创建额外的受限制的秘密密钥来限制对API的访问,因此会关联一个密钥应用的作用域列表。
入门
要开始使用,请将此包的服务提供者添加到您的app.php
文件中的提供者列表中,或者如果您将其作为自己的包的一部分使用,则需要要求该包。
'providers' => [ ... /* * Application Service Providers... */ \Adsy2010\LaravelApiCredentials\LaravelApiCredentialServiceProvider::class, ... ],
现在,如果您直接在Laravel中使用此包,请运行迁移以设置凭证和作用域表。
php artisan migrate
可选地,您可以在发布服务提供者之前进行此操作
php artisan vendor:publish --provider=Adsy2010\LaravelApiCredentials\LaravelApiCredentialServiceProvider
用法
要将API密钥添加到数据库,请提供一个密钥、值、服务以及您希望包含的任何命名作用域。
$key = 'PUBLIC'; $value = 'TEST_VALUE_STRING'; $service = 'TEST_SERVICE'; $scopes = []; $credentials = (new Credential)->store($key, $value, $service, $scopes);
预期的作用域数组是由名称和访问键组成的数组数组。如果未包含访问键,则访问的默认值为读取。
如果没有提供作用域,将创建一个默认的命名为“Public”的作用域,具有读取和写入权限。
$scopes = [ ['name' => 'Charges', 'access' => ScopeAccess::READ], ['name' => 'Payments', 'access' => ScopeAccess::WRITE], ['name' => 'Customers', 'access' => ScopeAccess::READ_AND_WRITE], ];
假设您需要更改提供者并将twitter从instagram迁移出来,您选择清理旧访问代码。
对所需凭证运行以下操作。删除方法将删除任何附加的作用域。
//Load a credential and call delete. This will remove the credential and any scopes attached. $credential->delete();
您需要在您的包或应用程序中使用密钥,只需请求服务、作用域和访问级别,就会返回解密后的密钥,即可使用。
$service = 'Quickbooks'; $scopeName = 'Publishable'; (new Scope)->retrieveCredentialValue($service, $scopeName, ScopeAccess::READ_AND_WRITE);