【问题标题】:How to check for oAuth2 scopes in Apigility?如何在 Apigility 中检查 oAuth2 范围?
【发布时间】:2015-12-27 14:25:46
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    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');
    }
    

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

    【讨论】:

    • 谢谢,我会调查的。我很惊讶,当它似乎是 Apigility 使用的 OAuth 库的一部分时,我们将不得不使用另一个模块来处理它。
    • 来自文档apigility.org/documentation/auth/authorization ... “默认情况下,所有经过身份验证的身份和“来宾”身份都可以访问所有内容。默认情况下,Apigility 不会让您能够创建用户组,或将特定权限分配给特定的经过身份验证的用户。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2014-06-22
    相关资源
    最近更新 更多