有一个在bash中获取令牌的工作样本
response=$(curl --fail --silent --insecure --data "username=test&password=test" \
--header "Authorization: Basic Y2xvdWQtYmVzcG9rZTo=" \
-X POST "https://lab7.local:8071/auth/token?grant_type=password")
token=`echo "$response" | awk '/access_token/{print $NF}' |sed 's/\"//g'`
echo $token
我正在尝试在perl中翻译它,但是获取代码400
#!/usr/bin/env perl
use strict;
use warnings;
use HTTP::Request;
use LWP::UserAgent;
use LWP::Simple;
use JSON::XS;
use Try::Tiny;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(POST => "https://lab7.local:8071/auth/token?grant_type=password");
my $post_data = "username=test&password=test";
$req->content($post_data);
my $resp = $ua->request($req);
if ($resp->is_success) {
my $mess = $resp->decoded_content;
print "$mess\n";
} else {
my $code = $resp->code;
print $code;
}
答案 0 :(得分:1)
您的curl
版本正在发送Perl版本中缺少的身份验证标头。你应该添加它。
$req->header(Authorization => 'Basic Y2xvdWQtYmVzcG9rZTo=');
答案 1 :(得分:0)
您正在使用用户名添加基本身份验证标头。该字符串只是基本64位编码的等价物。
所以你应该把它包含在你的LWP中:
$req -> authorization_basic ( 'cloud-bespoke' );
它应该有效。