我在所描述的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身份验证正常工作?
答案 0 :(得分:2)
从Apigility的新版本(不确定哪一个,但大于1.0)开始,可以创建多个Auth适配器并将每个API与不同的Auth适配器相关联。
如果您已创建了身份验证适配器(顶层验证 - >适配器 - >新适配器),您将拥有所设置的HTTP Basic的适配器名称。记下它。
然后转到您的API(与包含您的资源的模块名称匹配的API,而不是单个资源)。在该屏幕上,您将看到"身份验证"在左上角有一个下拉。
在下拉列表中,选择您创建的身份验证适配器并保存您的选择。根据您是否经过身份验证,您在该API下的资源现在应该正确响应。