Untitled
unknown
php
a year ago
1.9 kB
12
Indexable
<?php
protected function getJWKs()
{
try{
$response = $this->client->get(env('GOVBR_JWK_URL'));
if ($response->getStatusCode() !== 200) {
Log::error('Falha ao obter JWKs', ['status_code' => $response->getStatusCode()]);
throw new \Exception('Falha ao obter JWKs.');
}
$jwkSet = json_decode($response->getBody(), true);
return JWK::parseKeySet($jwkSet);
} catch (\Exception $e) {
Log::error('Erro ao obter JWKs', ['message' => $e->getMessage()]);
throw new \Exception('Erro ao obter JWKs.');
}
}
public function validateToken(string $token)
{
$jwkKeys = $this->getJWKs();
$algorithms = new \stdClass();
$algorithms->algs = ['RS256']; // Lista de algoritmos permitidos
try {
$decodedToken = JWT::decode($token, $jwkKeys, $algorithms);
return (array)$decodedToken;
} catch (\Exception $e) {
Log::error('Falha na validação do token', ['message' => $e->getMessage()]);
throw new \Exception('Token inválido.');
}
}
public function extractAccessTokenClaims(string $accessToken)
{
try{
return $this->validateToken($accessToken);
} catch(\Exception $e) {
Log::error('Erro ao extrair claims do Access Token', ['message' => $e->getMessage()]);
throw new \Exception('Erro ao extrair claims do Access Token.');
}
}
public function extractIdTokenClaims(string $idToken)
{
try{
return $this->validateToken($idToken);
} catch (\Exception $e) {
Log::error('Erro ao extrair claims do ID Token', ['message' => $e->getMessage()]);
throw new \Exception('Erro ao extrair claims do ID Token.');
}
}Editor is loading...
Leave a Comment