我的工作需要获得互联网使用授权。我登录,然后它识别我,让我访问我需要的任何东西。
我一直在使用POSTMAN来测试发送到公司RESTful服务并从公司RESTful服务接收。它会在另一端自动使用我同样的互联网使用身份验证,为我的用户提供POST和GET权限。
现在,我正在尝试使用perl脚本进行自动化,但它不会进行授权。 RESTful服务的所有者说,如果我创建一个Windows / .net应用程序,它将自动授权,但这不是一个选项。
有什么建议吗?我想我可以做一些特殊的标题或其他内容,并复制任何窗口正在做的事情....
我被要求提供我到目前为止所做的事情
#!/usr/local/bin/perl
use strict;
use LWP::UserAgent;
my $ua=LWP::UserAgent->new;
my $server_endpoint = "The post destination";
my $req= HTTP::Request->new(POST => $server_endpoint);
$req->header('content-type' => 'application/json');
my $post_data="[ SOME JSON HERE ]";
$req->content($post_data);
my $resp = $ua->request($req);
if($resp->is_success){
my $message = $resp->decoded_content;
print "received reply : $message\n";
}
else{
print "post error code : ",$resp->code,"\n";
print "post error message : ",$resp->message,"\n";
}
答案 0 :(得分:3)
过去当我不得不对IIS服务器进行身份验证时,我必须使用LWP :: Authen :: Ntlm来进行身份验证。
有关LWP :: Authen :: Ntlm的更多信息,请参阅https://metacpan.org/pod/LWP::Authen::Ntlm
我遇到的主要“陷阱”是keepalive
是必需的,而且新版本的IIS现在使用Digest,而不是NTLM
在这些情况下,我只是切换到内置的LWP :: Authen :: Digest(它来自LWP)
答案 1 :(得分:0)
查看一个类似的问题(向上滚动到顶部查看问题),看看包含的Perl代码是否有帮助...
LWP::UserAgent HTTP Basic Authentication
简短版本是,上面的Perl代码不包含任何登录信息,而且这个POSTMAN插件可能通过您的Perl代码尚未知晓的缓存登录信息发送。