如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?jmp的用户您好,
我尝试使用 HTTP 请求方法连接到 JMP/JSL (JMP14) 中的我们的内部服务/api
喜欢
url = "http://192.168.1.1/api/getsomedata;
request = New HTTP Request(
URL( url ),
Method( "Post" ),
Form(
Fields([[
"maxLimit" => "100"
]])
)
);
json = request << Send();
jsl_json = Parse JSON( json );
URL 需要 Windows 身份验证(Ldap、NTLM)。
有人知道如何提供[用户名,密码] Windows 凭据以通过 HTTP 请求方法访问该资源吗?
相关问题在这里讨论:
使用 Windows 身份验证的 http 请求
JMP 中的 REST 入门
导入 Web 服务数据:JMP® 14 中的新 HTTP 请求 (US 2018 231)
谢谢迪兹
数据存取回复:如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?谢谢!
回复:如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?嗨布莱恩,
感谢更新! 这个解决方案有效并且是真正的解决方案! 我将此标记为解决方案。
最好的,迪兹
回复:如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?基于表单是一种选择。
基本的是另一个。
简而言之(下面的示例),基于表单将键/值对发送到您的 Web 服务,就像使用网页表单登录一样。
基本身份验证位于标头中(HTTP 请求 << Headers 选项),其中身份验证为
用户名:密码(Base 64 编码)。 您还可以使用:
请求 << 用户名("我的用户名");
请求 << 密码("我的密码");
而不是直接为Basic设置头信息。
如果可能的话,您希望两者都通过 https 进行。
通常,您的 Web 服务会设置一个 cookie 来管理后续请求。
如果使用Basic,则不需要,只要为每个请求设置标头信息即可。
如果您选择 Web 服务的 Passport 选项,Passport 将充当中介者,它可以消化表单和 Basic(以及其他)并执行您想要的后端授权。
大多数网络服务(例如 Office 365、Google、Spotify、JMP Live)都使用 OAuth2(不是基于表单或基本的),但这是由于网站的外部可见性(这增加了复杂性)。 在我看来,如果它位于防火墙等内部,那么使用 https 进行基本或基于表单的操作是最简单的选择。
回复:如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?你好,谢谢你的建议! 很好,这个选项可以工作,但这不是我最初想要的。 无论如何,由于给出了一些解决方法,我将将此讨论标记为已解决! 谢谢迪兹
回复:如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?Oauth2 是一个选择吗? JMP 15 的脚本索引中有此内容。
Names Default To Here( 1 );
/*
https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow
*/
/*
Note: the "code" parameter is set automatically after the redirect occurs
*/
auth_url = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
token_url = "https://login.microsoftonline.com/common/oauth2/v2.0/token";
redirect_url = "http://localhost/myapp/";
client_id = "6731de76-14a6-49ae-97bc-6eba6914391e";
client_secret = "JqQX2PNo9bpM0uEihUPzyrh";
scope = "openid offline_access https://graph.microsoft.com/user.read";
auth_fields = [=> ];
token_fields = [=> ];
oauth2 = New OAuth2();
oauth2 << Grant Type( "Authorization Code" );
oauth2 << Auth URL( auth_url );
oauth2 << Token URL( token_url );
oauth2 << Redirect URL( redirect_url );
auth_fields["scope"] = scope;
auth_fields["client_id"] = client_id;
token_fields["client_secret"] = client_secret;
oauth2 << Auth Fields( auth_fields );
oauth2 << Token Fields( token_fields );
auth_header = oauth2 << Get Auth Header();
request = New HTTP Request(
URL( "https://graph.microsoft.com/v1.0/me" ),
Headers( {auth_header} ),
Method( "GET" )
);
data = request << Send;
回复:如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?嗨,布莱恩,谢谢您提供的信息,很高兴知道这一点!
JSL 文档中是否有关于如何通过 jmp 使用基于表单的 http 基本身份验证的示例或代码片段? 在更改服务器软件中的某些内容之前,我想尝试一下。
再次感谢迪兹
回复:如何使用 Windows 身份验证/NTLM/LDAP 连接到 API?HTTP 请求不直接通过 NTLM/LDAP 进行身份验证。
您想要使用诸如 Passport 之类的东西http://www.passportjs.org/
在您的 Web 服务中,然后使用基于表单的身份验证或基于 https 的基本身份验证。
-布莱恩