如何检查 Apigility 中的 oAuth2 范围?

How to check for oAuth2 scopes in Apigility?

我正在创建一个 apigility 项目,我们将在其中托管所有 API。我们需要能够使用 OAuth2 进行身份验证,但我们无法弄清楚如何控制对某些 API 的访问,似乎一旦客户端进行身份验证,他们就可以使用我们的任何 API,但我们想限制它们仅使用特定的 API我们定义。在阅读了 apigility 使用的 OAuth2 library 后,我看到可以定义范围,但我没有找到任何关于如何检查用户范围以查看他们是否具有访问权限的文档。我想知道这是否是限制访问某些 API 的最佳方式,如果是的话如何设置,或者是否有更好的方式来控制访问?

刚刚使用以下方法实现了这个功能...

https://github.com/remiq/apigility-zfc-rbac-recipe

它工作得非常好,只花了几个小时就完成了。

或者,您可以只在控制器操作(资源方法)中进行检查

$identity =  $this->getIdentity()->getAuthenticationIdentity();
$scope = $identity["scope"]

if (! in_array('admin', $scope)) {
     return new ApiProblem(Response::STATUS_CODE_401, 'No Auth');
}

以上代码未经测试,但如果您想那样做,应该会让您走上正确的道路