sminnee/silverstripe-apikey

SilverStripe 的 API 密钥管理

安装次数: 3,304

依赖: 1

建议者: 0

安全: 0

星星: 7

观察者: 6

分支: 17

开放问题: 2

类型:silverstripe-vendormodule

1.0.0-beta4 2022-07-19 20:59 UTC

This package is auto-updated.

Last update: 2024-08-27 05:55:51 UTC


README

Build Status codecov

此模块提供了一种在 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 密钥的权利限制得比“给定用户的全部权利”更细致。
  • 密钥不能被禁用,只能被删除
  • 不支持存储加密(“一次性读取”)密钥

状态

目前应将其视为实验性功能,并谨慎使用。它尚未接受安全审计。