sminnee / silverstripe-apikey
SilverStripe 的 API 密钥管理
1.0.0-beta4
2022-07-19 20:59 UTC
Requires
- silverstripe/framework: ^4.0
- silverstripe/graphql: ^1.0 || ^2.0 || ^3.0 || ^4.0
- silverstripe/vendor-plugin: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.7
- silverstripe/versioned: ^1.2
This package is auto-updated.
Last update: 2024-08-27 05:55:51 UTC
README
此模块提供了一种在 SilverStripe 中创建和管理 API 密钥的方法。这可以用于构建 RESTful 和其他 API。
要求
- SilverStripe ^4.0
- PHP 5.5+
安装
composer require sminnee/silverstripe-apikey
工作原理
- 扩展的
SecurityAdmin
提供了查看 API 密钥和生成新密钥的界面。API 密钥按成员分配。 - 一个
RequestMiddleware
会寻找 API 密钥头(默认:X-API-Key
),如果存在,则验证用户,使得 Member::currentUser() 返回相应的成员。这应该通过非 GraphQL 请求进行配置。 - 应该为 GraphQL 请求配置一个
ApiKeyAuthenticator
,并将验证过的成员返回给 GraphQL 上下文使用,同时不对 CMS 会话应用它。
常规使用
对于常规模块使用,请使用 RequestMiddleware
类。应用此配置的配置在此模块的 apikey.yml
文件中,但被注释掉了。
复制配置并将其添加到您的 mysite/_config/apikey.yml
文件中。
这将保护您的前端所有路由。
GraphQL
GraphQL 验证器将独立于 RequestMiddleware
工作。如果您使用此模块进行 GraphQL,您可能希望禁用 RequestMiddleware
。如果您同时运行两者,您会发现
- 认证异常在 GraphQL 上下文之外抛出(即不在 JSON 输出中包装)
- 成功的请求将注册两次“使用次数”,因为它们在两个地方进行了认证
限制
- 您无法将 API 密钥的权利限制得比“给定用户的全部权利”更细致。
- 密钥不能被禁用,只能被删除
- 不支持存储加密(“一次性读取”)密钥
状态
目前应将其视为实验性功能,并谨慎使用。它尚未接受安全审计。