如何使用服务基本身份验证模块?
我想为我的服务添加http基本身份验证。我已经安装了它并在端点配置上启用了它。我在端点配置中得到了此“ HTTP基本认证Services_basic_auth没有可用的设置”。设置页面在哪里?
如何使用服务基本身份验证模块?
我想为我的服务添加http基本身份验证。我已经安装了它并在端点配置上启用了它。我在端点配置中得到了此“ HTTP基本认证Services_basic_auth没有可用的设置”。设置页面在哪里?
Answers:
该模块针对Drupal帐户验证Web服务调用。
请注意,使用基本身份验证,如果不使用SSL,则可以截取凭据。
该模块使用标准的PHP身份验证标头并提交标准的drupal登录表单,而不检查任何特定的角色或权限。因此,任何drupal用户都可以使用。
使用curl或wget进行测试Web服务调用以对其进行测试。在带有curl stackoverflow答案的调用中,还有关于如何使用PHP进行调用的说明。
上面的模块用于使用基本访问身份验证技术对服务调用进行身份验证。通过向服务调用中添加Authorization标头,您将使用您的Drupal用户名和密码来对服务调用进行身份验证,如下所示
当用户代理想要发送服务器身份验证凭据时,它可以使用授权标头。
Authorization标头的构造如下:
用户名和密码合并为字符串“ username:password”
然后,使用Base64的RFC2045-MIME变体对生成的字符串文字进行编码,但不限于76个字符/行。然后,将授权方法和空格(即“ Basic”)放在编码的字符串之前。
例如,如果用户代理使用“ Aladdin”作为用户名,并使用“ open sesame”作为密码,则标题的格式如下:
授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ ==
下面的示例是使用curl的调用。
curl -H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" http://www.example.com/endpoint/yourservice
使用诸如https://addons.mozilla.org/fr/firefox/addon/restclient/之类的工具来测试您的客户端:
注意: 我一直遇到问题,即使标记了HTTP基本身份验证选项,该端点的资源正在返回200而不是401。也就是说,模块无法保护我的端点。
问题出现在:
https://www.drupal.org/project/services_basic_auth
version: 7.x-1.4
我通过为模块打补丁解决了它:
安装Services Basic Authentication
模块后,转到服务器的REST设置:
/admin/structure/services
输入Edit
选项,在底部有一个复选框:
HTTP basic authentication
启用它并点击保存按钮。
不要忘记使用内容访问模块。
根据MPD的请求添加其他详细信息。
如果您不使用内容访问模块,那么用户将看到所有内容,包括其他人不应看到的内容。例如,用户A已存储了用户B不应该看到的个人数据,反之亦然。服务基本身份验证模块启用身份验证,但不强制执行内容访问。内容访问模块强制执行该操作。如果您不使用内容访问控制,则没有必要对用户进行身份验证。