2014-02-06 109 views
0

我的工作需要互聯網使用授權。我登錄後,它會識別我並讓我訪問我需要的任何內容。使用系統身份驗證POST到RESTful系統

我一直在使用POSTMAN測試發送和接收來自公司的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

和你試過什麼? – nrathaus

+0

嘗試使用WireShark來了解客戶端和服務器之間發送的內容。 –

+0

我將不得不看看WireShark,看看是否有效... – mrfish

回答

0

在類似看一看問題(向上滾動到頂部看到的問題),看看是否Perl代碼包含的位沒有幫助...

LWP::UserAgent HTTP Basic Authentication

短的版本是,它不會出現你的Perl代碼以上包括任何登錄信息和th POSTMAN插件可能正在發送緩存的登錄信息,表明您的Perl代碼尚未意識到。

+0

我認爲NTLM或摘要正在使用,所以HTTP基本不會在這裏工作。 – nrathaus

3

在過去,當我必須使用IIS服務器進行身份驗證時,我不得不使用LWP :: Authen :: Ntlm來進行身份驗證。

有關LWP ::認證介紹:: NTLM的更多信息,請參閱https://metacpan.org/pod/LWP::Authen::Ntlm

主要的「陷阱」我本來是keepalive是必需的,而IIS的新版本現在使用摘要,而不是NTLM

在這些情況下,我只是切換到內置的LWP :: Authen :: Digest(它進入LWP內部)

+0

感謝nrathaus,這看起來可能會適合我。現在對於愚蠢的問題 - 如何將服務的發佈地址(https://someplace.net/DataService/save/GROUP「)轉換爲第一個$ ua憑證框? – mrfish

+0

這看起來不像憑證像一個URL – nrathaus