Skip to content

Instantly share code, notes, and snippets.

@ritou
Created February 14, 2013 19:50
Show Gist options
  • Save ritou/4955787 to your computer and use it in GitHub Desktop.
Save ritou/4955787 to your computer and use it in GitHub Desktop.
ID Token validation using JSON::WebToken module
#!/usr/bin/env perl
use strict;
use warnings;
use Crypt::OpenSSL::CA;
use JSON::WebToken;
use Data::Dump qw(dump);
my $jwt = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjEzNTk0Mjg3MTgsInN1YiI6IlU2WFRQa0YzNGd1dmVzdTVrQktKTmtobXloY0tKX2FqWHFtTDBzZFVJTVUiLCJpYXQiOjEzNTk0MjgxMTgsImF1ZCI6IjVaUDcyYzdDbEQyUXlyR0dmcTFrWXkxMzU5NDIxMjA1IiwiaXNzIjoiaHR0cHM6Ly8ybmRhdXRoLm9wZW5pZGNvbm5lY3QuaW5mbyJ9.g-xh044m2h402Pk9oEvYU-gv7_qjrrY1HuO7BQukC4jhYQMLcXcc8W9orW5vbt7_Hymi9ZU8KRl6Et01L9FXZ73HkFn4DokEPo76LyF1JnVA3DfBuX2izh_qprX-fyzOmq7SxGzWwSnDMJGjRHpWXifyeE8dhwSE4tmC2Cu-FNWqHzkJmYCUQoHwAgAFx4e4oOwcs59Q9o1OA21-p8g8_4_9W9QHf6dUeo42-TdKU82M9KiUrXsaV3X3ed9evLvMkDmHMFPZskd1OgzLQkkQ-1mNhXqlB8fJLOL1LpBC5f_xY1y_iwi6gRnmbHST1c6ji5QawpjBu_HdLV6-0ufyjQ";
my $cert = << "EOS";
-----BEGIN CERTIFICATE-----
MIIDTDCCAjQCCQCQMxn30qKrhTANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJK
UDEOMAwGA1UECBMFQWtpdGExDzANBgNVBAcTBllva290ZTETMBEGA1UEChMKU2Vj
b25kQXV0aDEjMCEGA1UEAxMaMm5kYXV0aC5vcGVuaWRjb25uZWN0LmluZm8wHhcN
MTMwMTA1MDM1NDU0WhcNMTQwMTA1MDM1NDU0WjBoMQswCQYDVQQGEwJKUDEOMAwG
A1UECBMFQWtpdGExDzANBgNVBAcTBllva290ZTETMBEGA1UEChMKU2Vjb25kQXV0
aDEjMCEGA1UEAxMaMm5kYXV0aC5vcGVuaWRjb25uZWN0LmluZm8wggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCuun7hfvzxUbPFa8B3HqY5b2FnIMAr3lxt
ZkQffX+jRbGYJ9DGEypVQ0xfH7Ilj5pJw4ixhQMAS3y3iparsYUM3+C6ympCGyOK
1n/YY8cLQIGyuUJSahnr9y3zlYpuywF3QVSpuWJ/RfYgUiFaSb4dZdcqQEOIm9eZ
fkAKHTOGLFLH6VgkCRtIVRbCbwmJMo6ezSqz8zJ0+Y+M2ghP0a8ApFig582kWeDI
Wd9w5R78I+wWTuFBR26hhXwCatjKOkwRbexmTUKHlpjk24+AhNTy7Wc4j41V/xZW
v9a+666yYgVMa7JInKH+H8wEqmNDLy69K3yWcDlnkIP91bvgtT5fAgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBADiDlldPU20uSEaR+uA3iwEaXwBqTiJ4dDS/IHnnj8Kh
edPuWZjXRzWQvV+5yp5Sv8JrisMStLv6Cx8lCLUuIflkkIJa4VxqpWLhxy59YUyz
EPL+Kt0RZKeFIzOleaiXZ+LDSVbUuewsPeT+z0F1109FLGNSvJYIxtw+sY0Ey+Cy
qdCQCQnXUcdbimAsxFnQ1+BwkKiIDmOmplAuDAdL4oOpiyxovjBcmTx/NaNTajwr
OU6kk4p8tyT+mvqnU3NwfOv1a8jAE3BptLpi9v5UO1/WDmNZO2ejZS0KG6ccZsRA
7/GraFmoTCEM6Wy7bvvBiMKBEDmswzanqcR1eJYwx6A=
-----END CERTIFICATE-----
EOS
my $ca = Crypt::OpenSSL::CA::X509->parse($cert);
my $claims = JSON::WebToken->decode($jwt, $ca->get_public_key->to_PEM);
print dump($claims);
#{
# aud => "5ZP72c7ClD2QyrGGfq1kYy1359421205",
# exp => 1359428718,
# iat => 1359428118,
# iss => "https://2ndauth.openidconnect.info",
# sub => "U6XTPkF34guvesu5kBKJNkhmyhcKJ_ajXqmL0sdUIMU",
#}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment