我正在编写一个Ruby脚本来连接到REST API网站。 通过使用AD凭据使用LDAP / SSO对网站进行身份验证,因此不必提供基本身份验证或用户/密码。
这是到目前为止的代码:
Net::HTTPUnauthorized 401 Authorization Required
但我收到授权错误:
ldap = Net::LDAP.new
ldap.host = "ldap.company.com"
ldap.port = "389"
ldap.auth "user@company.com", "password"
ldap.bind
使用Net :: LDAP,我可以在计算机上验证我的凭据:
DLL.h
#ifdef DLL_EXPORTS
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
DLL_API int test(void);
DLL.cpp
#include "DLL.h"
// This is an example of an exported function.
DLL_API int test(void)
{
return 42;
}
但我不知道如何在HTTP请求中“附加”或传递此LDAP信息。
我的所有Google搜索都指向我在网站应用上启用SSO /身份验证,但我不想这样做,我想将我的Ruby脚本连接到现有的LDAP身份验证网站。
更新#1 一些Ruby论坛指向我的gem HTTPI并使用'curb'适配器。此适配器依赖于Curl库来处理Kerberos / SPNEGO身份验证。 但是,我无法使curb安装程序使用他们在其网站上链接的curl库(对于Windows计算机)。
我使用kerberos模块将代码移动到Python。我能够生成故障单并将其附加到HTTP请求标头上,该标头由REST API进行身份验证并返回我想要的数据。
我还在学习,所以即使我的代码适用于Python,我也希望能够在Ruby上运行。
Python中的示例代码: http://commons.apache.org/sandbox/commons-performance/
答案 0 :(得分:0)
您可以通过多种方式通过HTTP传递凭据。如果REST API允许您传递LDAP服务器的主机/端口信息(这可能是一个巨大的安全漏洞),我会感到惊讶。最可能的情况是您需要以REST API期望的形式提供用户名和密码。然后,REST API将对LDAP服务器执行身份验证,并根据身份验证结果,您将从REST API返回相应的响应/状态。
简而言之,您需要从REST API管理员(或API文档)获取信息,以了解您希望如何通过HTTP进行身份验证。
我希望这会有所帮助。
答案 1 :(得分:0)
获得401 Authorization required
后,服务器还必须提供www-authenticate
- 标头,其中包含有关如何进行身份验证的详细信息。查看并查看给出的信息。
答案 2 :(得分:0)
我不知道这是否有帮助,我尝试使用邮递员针对使用LDAP的API发送身份验证。 与我合作的枪支开发人员之一帮助了我,结果我不得不在用户名字段中使用DOMAIN \ username。在那之后工作了。