2017-01-12 1 views
0
use REST::Client; 
use JSON; 
use Data::Dumper; 
use MIME::Base64; 

my $username = 'mydomain.com\admin'; 
my $password = 'testpwd'; 

my $headers = {Accept => 'application/json', Authorization => 'Basic ' . encode_base64($username . ':' . $password)}; 

my $client = REST::Client->new(); 

$client->setHost('http://55.170.145.189:2013'); 

$client->GET(
    '/SitePages', 
    $headers 
); 


print $client->responseContent(); 

Я пытаюсь подключиться Sharepoint с помощью Perl REST API, но всегда получает 401 НЕСАНКЦИОНИРОВАННОЙ ошибки. Я проверил имя пользователя и пароль. Оба работают при доступе к веб-сайту SharePoint через браузер с использованием тех же учетных данных.Basic Authentication из Perl для Sharepoint с использованием REST API не работает

+0

Iirc the Rest :: Клиентский модуль имеет встроенный способ автоматической установки учетных данных, но я не могу подтвердить это сейчас. – simbabque

ответ

2

Я думаю, ваша проблема будет с encode_base64 - если вы делаете это:

use Data::Dumper; 
use MIME::Base64; 

my $username = 'mydomain.com\admin'; 
my $password = 'testpwd'; 

my $headers = {Accept => 'application/json', 
       Authorization => 'Basic ' . encode_base64($username . ':' . $password)}; 
print Dumper $headers; 

Что вы получите на выходе это:

$VAR1 = { 
      'Accept' => 'application/json', 
      'Authorization' => 'Basic bXlkb21haW4uY29tXGFkbWluOnRlc3Rwd2Q= 
' 
     }; 

Ваш заголовок имеет странствующий символ новой строки в нем.

Так что, возможно попробовать:

my $headers = {Accept => 'application/json', 
       Authorization => 'Basic ' . encode_base64($username . ':' . $password, '')}; 

который устанавливает base64 окончание строки к ''. Вы получаете:

$VAR1 = { 
      'Accept' => 'application/json', 
      'Authorization' => 'Basic bXlkb21haW4uY29tXGFkbWluOnRlc3Rwd2Q=' 
     }; 
+0

Пробовал вышеуказанные изменения, но все еще не работает. – user7410161

Смежные вопросы