This shows you the differences between two versions of the page.
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; |