【问题标题】:Account wide api keys in a many to many scenario多对多场景中的帐户范围 api 密钥
【发布时间】:2019-03-05 18:21:16
【问题描述】:

我正在开发一个用户可以拥有多个帐户的 REST API。用户将能够通过 JWT 身份验证访问 API,并且帐户将拥有 API 密钥,允许您对与帐户相关的模型执行 CRUD 操作(帐户和模型以一对多的方式关联)。

我的问题是如何以安全的方式实现这一点? Stripe 具有类似的逻辑,并且与帐户关联的 API 密钥对连接到它的所有用户都是可见的,这让我认为它们可能以明文形式存储或使用公共密钥加密?

我似乎也无法理解如何创建使用 jwt 令牌或帐户特定 api 密钥的单个控制器端点。

我认为这可以通过在使用 JWT 执行的请求上要求 account_id 并在 API 密钥请求上自动加载来完成,但这是最好的方法还是我遗漏了什么?

类似的东西

public function createModel(Request $request)
{
    if ($request->type === 'api_key')
        $account_id = $this->getAccountIdFromKey($request->get('api_key'));
    } else {
        //Request is performed using user JWT
        //Validate that $request has account_id set
    }

    //Logic related to saving Model here
}

提前致谢

【问题讨论】:

  • 您可以在发布时将帐户 ID 存储在 JWT 有效负载中。

标签: rest symfony security api-design


【解决方案1】:

看看这个例子,它描述了如何通过 Symfony 安全组件Official Documentation 使用 api 密钥对用户进行身份验证。

我找不到 Symfony 4.* 版本的文档,它应该与那个版本有很大不同。

或者您可以包含LexikJWTAuthenticationBundle,它为 JWT 身份验证过程提供完整支持。

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多