User Tools

Site Tools


how_to_use_jwts_with_perl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
how_to_use_jwts_with_perl [2022/01/13 19:36]
abeverley created
how_to_use_jwts_with_perl [2022/01/13 19:39] (current)
abeverley
Line 1: Line 1:
-==== Server ​side ====+==== Client ​side ====
  
   #​!/​usr/​bin/​perl   #​!/​usr/​bin/​perl
Line 15: Line 15:
       chomp $pass;       chomp $pass;
   ReadMode ( '​normal'​ );    #Back to your regularly scheduled program   ReadMode ( '​normal'​ );    #Back to your regularly scheduled program
 +  ​
   my $key = Crypt::​PK::​RSA->​new('/​home/​user/​.ssh/​id_rsa',​ $pass);   my $key = Crypt::​PK::​RSA->​new('/​home/​user/​.ssh/​id_rsa',​ $pass);
 +  ​
   my $jws_token = encode_jwt(payload => '​payload',​ alg => '​RS256',​ key => $key, extra_headers=>​{kid=>'​me@example.com'​});​   my $jws_token = encode_jwt(payload => '​payload',​ alg => '​RS256',​ key => $key, extra_headers=>​{kid=>'​me@example.com'​});​
   say STDOUT $jws_token;   say STDOUT $jws_token;
 +
 +==== Server side ====
 +
 +  #​!/​usr/​bin/​perl
 +  ​
 +  use strict; use warnings;
 +  ​
 +  use Crypt::JWT qw(encode_jwt decode_jwt);​
 +  use Crypt::​PK::​RSA;​
 +  ​
 +  my $request_token = '​xxx';​
 +  ​
 +  my $pubkey = Crypt::​PK::​RSA->​new('/​home/​user/​ssh/​id_rsa.pub'​);​
 +  my $jwk_hash1 = $pubkey->​export_key_jwk('​public',​ 1);
 +  $jwk_hash1->​{kid} = '​me@example.com';​
 +  ​
 +  my $keylist = {
 +    keys => [
 +        $jwk_hash1,
 +        $jwk_hash2,
 +    ]
 +  };
 +  ​
 +  my ($header, $client) = decode_jwt(token=>​$request_token,​ kid_keys=>​$keylist,​ decode_header => 1);
 +  ​
 +  say STDERR Dumper $header;
 +  say STDOUT $client;
how_to_use_jwts_with_perl.1642102616.txt.gz ยท Last modified: 2022/01/13 19:36 by abeverley