zend-framework2 - 如何在 Apigility 中检查 oAuth2 范围?

标签 zend-framework2 oauth-2.0 laminas-api-tools

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

最佳答案

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

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

它工作得非常好,只需要几个小时就可以让它全部工作。

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

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

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

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

关于zend-framework2 - 如何在 Apigility 中检查 oAuth2 范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32855282/

相关文章:

zend-framework2 - 如何在 ZF2 FlashMessenger 中使用 HTML

php - Apigility 不保存文档字段

php - DB2 i 系列上的 ZF2 Zend\Paginator\Adapter\DbSelect

php - 范围包括 '1' 的 BETWEEN 也返回 '10'

php - 将 nvarchar 值 '10,12' 转换为数据类型 int 时转换失败

php - ZF2保存到多个表,(1)如果数据库错误则回滚更改(2)显示数据库错误

javascript - 对于 S3 静态站点前端和 EC2 API 后端,我的 OAuth2 重定向 URL 应该是什么?

oauth-2.0 - OAuth 2.0 客户端定义

java - 在同一上下文中使用 Spring Boot 2 OAuth 客户端和资源服务器

php - Zend 2 条件验证器