使用系统身份验证POST到RESTful系统

时间:2014-02-06 20:16:51

标签: perl rest

我的工作需要获得互联网使用授权。我登录,然后它识别我,让我访问我需要的任何东西。

我一直在使用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";
}

2 个答案:

答案 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代码尚未知晓的缓存登录信息发送。