多个场景中的帐户范围api密钥

问题描述 投票:0回答:1

我正在开发一个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
}

提前致谢

rest symfony security api-design
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.