如何让基本 HTTP 身份验证适用于 Apigility 应用程序?
How to get the Basic HTTP Authentication working for an Apigility application?
我按照 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 身份验证工作?
从 Apigility 的新版本开始(不确定具体是哪一个,但大于 1.0)可以创建多个 Auth 适配器并将每个 API 关联到不同的 Auth 适配器。
如果您已经创建了一个身份验证适配器(顶部的身份验证 -> 适配器 -> 新适配器),您将拥有一个用于您设置的 HTTP Basic 的适配器名称。记录下来。
然后转到您的 API(与包含您的资源的模块名称相匹配的名称,而不是单个资源)。在该屏幕上,您会在左上角看到带有下拉菜单的 "Authentication"。
在下拉列表中,选择您创建的身份验证适配器并保存您的选择。您在 API 下的资源现在应该根据您是否通过身份验证做出正确响应。
我按照 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 身份验证工作?
从 Apigility 的新版本开始(不确定具体是哪一个,但大于 1.0)可以创建多个 Auth 适配器并将每个 API 关联到不同的 Auth 适配器。
如果您已经创建了一个身份验证适配器(顶部的身份验证 -> 适配器 -> 新适配器),您将拥有一个用于您设置的 HTTP Basic 的适配器名称。记录下来。
然后转到您的 API(与包含您的资源的模块名称相匹配的名称,而不是单个资源)。在该屏幕上,您会在左上角看到带有下拉菜单的 "Authentication"。
在下拉列表中,选择您创建的身份验证适配器并保存您的选择。您在 API 下的资源现在应该根据您是否通过身份验证做出正确响应。