diff --git a/src/Controller/OAuth2Controller.php b/src/Controller/OAuth2Controller.php index af12875..248e3e8 100644 --- a/src/Controller/OAuth2Controller.php +++ b/src/Controller/OAuth2Controller.php @@ -14,6 +14,8 @@ use League\Bundle\OAuth2ServerBundle\Manager\AccessTokenManagerInterface; class OAuth2Controller extends AbstractController { + + #[Route('/oauth2/userinfo', name: 'userinfo', methods: ['GET'])] public function userinfo(Request $request): JsonResponse { @@ -24,10 +26,32 @@ class OAuth2Controller extends AbstractController } return new JsonResponse([ - 'sub' => $user->getId(), - 'username' => $user->getName(), + 'id' => $user->getId(), + 'name' => $user->getName(), 'email' => $user->getEmail(), - 'roles' => $user->getRoles(), + 'surname' => $user->getSurname(), ]); } + + #[Route('.well-known/jwks.json', name: 'app_jwks', methods: ['GET'])] + public function jwks(): Response + { + // Load the public key from the filesystem and use OpenSSL to parse it. + $kernelDirectory = $this->getParameter('kernel.project_dir'); + $publicKey = openssl_pkey_get_public(file_get_contents($kernelDirectory . '/config/jwt/public.key')); + $details = openssl_pkey_get_details($publicKey); + $orgs = + $jwks = [ + 'keys' => [ + [ + 'kty' => 'RSA', + 'alg' => 'RS256', + 'use' => 'sig', + 'n' => strtr(rtrim(base64_encode($details['rsa']['n']), '='), '+/', '-_'), + 'e' => strtr(rtrim(base64_encode($details['rsa']['e']), '='), '+/', '-_'), + ], + ], + ]; + return $this->json($jwks); + } }