如何让Apigility应用程序使用基本HTTP身份验证?

时间:2015-05-12 12:31:08

标签: php authentication zend-framework2 basic-authentication apigility

我在所描述的Apigility docu中设置了基本身份验证(文档不再是最新的,但主要步骤保持不变)。因此,我创建了一个users.htpasswd文件并添加了一个身份验证适配器。我的/config/autoload/local.php已更新,并获得了适配器配置:

return array(
    ...
    'zf-mvc-auth' => array(
        'authentication' => array(
            'adapters' => array(
                'dummy basic auth' => array(
                    'adapter' => 'ZF\\MvcAuth\\Authentication\\HttpAdapter',
                    'options' => array(
                        'accept_schemes' => array(
                            0 => 'basic',
                        ),
                        'realm' => 'Dummy Realm',
                        'htpasswd' => 'data/users.htpasswd',
                    ),
                ),
            ),
        ),
    ),
);

到目前为止一切顺利:

Test: I sent a `GET` request got the data just like before the auth setup.
Expected: `200 OK`
Result: `200 OK`
OK

然后我去了Apigility Admin Backend -> My API -> My Rest Service -> Authorization并标记了方法和终点,我想要求授权。

Test: I sent a new request without credentials / authentication token.
Expected: `403 Forbidden`
Result: `403 Forbidden`
OK

Test: I sent another request with wrong credentials / authentication token.
Expected: `401 Unauthorized`
Result: `403 Forbidden`
FAIL

Test: I sent a request with correct credentials / authentication token.
Expected: `200 OK`
Result: `403 Forbidden`
FAIL

我做错了什么? 如何使基本HTTP身份验证正常工作?

1 个答案:

答案 0 :(得分:2)

从Apigility的新版本(不确定哪一个,但大于1.0)开始,可以创建多个Auth适配器并将每个API与不同的Auth适配器相关联。

如果您已创建了身份验证适配器(顶层验证 - >适配器 - >新适配器),您将拥有所设置的HTTP Basic的适配器名称。记下它。

然后转到您的API(与包含您的资源的模块名称匹配的API,而不是单个资源)。在该屏幕上,您将看到"身份验证"在左上角有一个下拉。

Auth Adapter Picker

在下拉列表中,选择您创建的身份验证适配器并保存您的选择。根据您是否经过身份验证,您在该API下的资源现在应该正确响应。