adsy2010/laravel-api-credentials

此包旨在为API密钥提供加密层,以确保它们不会直接暴露在env或配置文件中

v1.0.0 2021-09-02 20:13 UTC

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);