From e4f597ef1933fa7d033939386c1077319a4518b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robin=20M=C3=BCller?= Date: Fri, 18 Mar 2022 00:43:01 +0100 Subject: [PATCH] Token Validation with modulus and exponent --- src/Provider/Azure.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/Provider/Azure.php b/src/Provider/Azure.php index e3fa65c..91668fd 100644 --- a/src/Provider/Azure.php +++ b/src/Provider/Azure.php @@ -3,6 +3,7 @@ namespace TheNetworg\OAuth2\Client\Provider; use Firebase\JWT\JWT; +use Firebase\JWT\JWK; use League\OAuth2\Client\Grant\AbstractGrant; use League\OAuth2\Client\Provider\AbstractProvider; use League\OAuth2\Client\Provider\Exception\IdentityProviderException; @@ -354,6 +355,22 @@ public function getJwtVerificationKeys() $keys[$keyinfo['kid']] = $publicKey; } + } else if (isset($keyinfo['n']) && isset($keyinfo['e'])) { + $pkey_object = JWK::parseKey($keyinfo); + + if ($pkey_object === false) { + throw new \RuntimeException('An attempt to read a public key from a ' . $keyinfo['n'] . ' certificate failed.'); + } + + $pkey_array = openssl_pkey_get_details($pkey_object); + + if ($pkey_array === false) { + throw new \RuntimeException('An attempt to get a public key as an array from a ' . $keyinfo['n'] . ' certificate failed.'); + } + + $publicKey = $pkey_array ['key']; + + $keys[$keyinfo['kid']] = $publicKey; } }