帐户范围 api 多对多场景中的密钥
Account wide api keys in a many to many scenario
我正在开发 REST API,用户可以拥有多个帐户。用户将能够通过 JWT 身份验证访问 API 并且帐户将具有 API 密钥,允许您对与帐户相关的模型执行 CRUD 操作(帐户和模型是一对多相关的)时尚)。
我的问题是如何以安全的方式实现这一点? Stripe 有类似的逻辑,与帐户关联的 API 密钥对所有连接到它的用户都是可见的,这让我认为它们可能以明文形式存储或使用公共密钥加密?
我似乎也无法理解如何创建使用 jwt 令牌或帐户特定 api 密钥的单个控制器端点。
我认为这可以通过要求 account_id 对使用 JWT 执行的请求并在 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
}
提前致谢
看看这个例子,它描述了如何使用 api 密钥通过 Symfony 安全组件验证用户 Official Documentation。
我找不到 4.* 版 Symfony 的文档,该版本应该有很大不同。
或者您可以包含 LexikJWTAuthenticationBundle,它为 JWT 身份验证过程提供完整的支持。
我正在开发 REST API,用户可以拥有多个帐户。用户将能够通过 JWT 身份验证访问 API 并且帐户将具有 API 密钥,允许您对与帐户相关的模型执行 CRUD 操作(帐户和模型是一对多相关的)时尚)。
我的问题是如何以安全的方式实现这一点? Stripe 有类似的逻辑,与帐户关联的 API 密钥对所有连接到它的用户都是可见的,这让我认为它们可能以明文形式存储或使用公共密钥加密?
我似乎也无法理解如何创建使用 jwt 令牌或帐户特定 api 密钥的单个控制器端点。
我认为这可以通过要求 account_id 对使用 JWT 执行的请求并在 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
}
提前致谢
看看这个例子,它描述了如何使用 api 密钥通过 Symfony 安全组件验证用户 Official Documentation。
我找不到 4.* 版 Symfony 的文档,该版本应该有很大不同。
或者您可以包含 LexikJWTAuthenticationBundle,它为 JWT 身份验证过程提供完整的支持。