如何使用服务基本身份验证?


Answers:


11

该模块针对Drupal帐户验证Web服务调用。

  1. 启用模块
  2. 设置一个drupal用户
  3. 使用用户的凭证进行Web服务调用。

请注意,使用基本身份验证,如果不使用SSL,则可以截取凭据。

该模块使用标准的PHP身份验证标头并提交标准的drupal登录表单,而不检查任何特定的角色或权限。因此,任何drupal用户都可以使用。

使用curl或wget进行测试Web服务调用以对其进行测试。在带有curl stackoverflow答案的调用中,还有关于如何使用PHP进行调用的说明


这与在单个URL调用中使用此结构完全不同吗? myusername:mypassword@example.com/callback
Citricguy 2014年

@Citricguy没什么不同。此语法由URI方案en.wikipedia.org/wiki/URI_scheme提供。我不会那样做。某些REST服务可以在浏览器中进行测试,我担心凭据会进入浏览器历史记录。使用https进行加密。这也将取决于http库,php http可能没问题,请参见php.net/manual/en/features.http-auth.php#44686上的注释。Microsoft浏览器不再支持该语法,因此,如果您使用javascript进行调用,它可能无法正常工作。一些API确实使用了此方法goo.gl/eS9mqv
2014年

抱歉,实现呼叫的方式对呼叫没有影响。因此,使用u:p@host.com进行测试是否可行。我说的是可能会有类似的实施问题。我认为标题,而不是URL会尽早简化测试。
2014年

4

上面的模块用于使用基本访问身份验证技术对服务调用进行身份验证。通过向服务调用中添加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

2
是的,我已经阅读过,但是仍然不知道如何实现它?安装模块后该怎么办?任何帮助都会很棒。谢谢
Rijalul fikri 2014-4-10

2
  1. 启用模块后,转到“结构”>“服务”
  2. 选择您的端点,然后单击编辑 在此处输入图片说明

  3. 使用诸如https://addons.mozilla.org/fr/firefox/addon/restclient/之类的工具来测试您的客户端:

在此处输入图片说明

注意: 我一直遇到问题,即使标记了HTTP基本身份验证选项,该端点的资源正在返回200而不是401。也就是说,模块无法保护我的端点。

问题出现在:

https://www.drupal.org/project/services_basic_auth
version: 7.x-1.4

我通过为模块打补丁解决了它:

https://www.drupal.org/node/2734207


1

可能有什么问题:设置所有设置后:

  1. 启用服务基本身份验证模块
  2. 创建服务api端点,例如:通过获取所有节点
  3. 在编辑页面上设置“ HTTP基本身份验证”复选框
  4. 创建一个用户

并注意,如果您不禁用“查看已发布的内容”权限,则任何用户都可以访问服务api端点并返回结果。


0

安装Services Basic Authentication模块后,转到服务器的REST设置:

/admin/structure/services

输入Edit选项,在底部有一个复选框:

HTTP basic authentication

启用它并点击保存按钮。


我将使用什么user:password进行HTTP基本身份验证?
AshwinP

-1

不要忘记使用内容访问模块。

根据MPD的请求添加其他详细信息。

如果您不使用内容访问模块,那么用户将看到所有内容,包括其他人不应看到的内容。例如,用户A已存储了用户B不应该看到的个人数据,反之亦然。服务基本身份验证模块启用身份验证,但不强制执行内容访问。内容访问模块强制执行该操作。如果您不使用内容访问控制,则没有必要对用户进行身份验证。


您能否扩展此模块如何解决用户需求?
mpdonadio

请在原始答案中查看我的更新。
techwestcoastsfosea 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.