|
|
@@ -45,10 +45,22 @@ die 'login failed' unless $login->success;
|
|
|
|
|
|
my $token = $login->res->json->{token};
|
|
|
|
|
|
+my $csrf;
|
|
|
+for my $cookie (@{ $login->res->cookies }) {
|
|
|
+ if ($cookie->name eq 'csrftoken') {
|
|
|
+ $csrf = $cookie->value;
|
|
|
+ last;
|
|
|
+ }
|
|
|
+}
|
|
|
+die 'missing CSRF token' unless defined $csrf;
|
|
|
+
|
|
|
my $attemptLogin = $ua->post('https://hub.docker.com/attempt-login/' => {} => json => { jwt => $token });
|
|
|
die 'attempt-login failed' unless $attemptLogin->success;
|
|
|
|
|
|
-my $authorizationHeader = { Authorization => "JWT $token" };
|
|
|
+my $authorizationHeader = {
|
|
|
+ Authorization => "JWT $token",
|
|
|
+ 'X-CSRFToken' => $csrf,
|
|
|
+};
|
|
|
|
|
|
my $userData = $ua->get('https://hub.docker.com/v2/user/' => $authorizationHeader);
|
|
|
die 'user failed' unless $userData->success;
|