timrourke/incognito

View on GitHub
src/Token/TokenValidator.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
 
declare(strict_types=1);
 
namespace Incognito\Token;
 
use Incognito\Token\Validation\ClaimsValidator;
use Incognito\Token\Validation\SignatureValidator;
use Jose\Component\Signature\JWS;
 
/**
* Class TokenValidator
*
* The token validator service verifies that a JSON Web Token was genuinely
* issued by your AWS Cognito User Pool, and is valid per its claims, signature,
* and expiration.
*
* @package Incognito\Token
*/
class TokenValidator
{
/**
* @var \Incognito\Token\Validation\ClaimsValidator
*/
private ClaimsValidator $claimsValidator;
 
/**
* @var \Incognito\Token\Validation\SignatureValidator
*/
private SignatureValidator $signatureValidator;
 
/**
* @var \Incognito\Token\Deserializer
*/
private Deserializer $tokenDeserializer;
 
/**
* Constructor.
*
* @param \Incognito\Token\Validation\ClaimsValidator $claimsValidator
* @param \Incognito\Token\Validation\SignatureValidator $signatureValidator
* @param \Incognito\Token\Deserializer $tokenDeserializer
*/
public function __construct(
ClaimsValidator $claimsValidator,
SignatureValidator $signatureValidator,
Deserializer $tokenDeserializer
) {
$this->claimsValidator = $claimsValidator;
$this->signatureValidator = $signatureValidator;
$this->tokenDeserializer = $tokenDeserializer;
}
 
/**
* Verify an AWS Cognito JWT
*
* @param string $tokenString
* @return \Jose\Component\Signature\JWS
* @throws \Exception
*/
public function verifyToken(string $tokenString): JWS
{
$token = $this->tokenDeserializer->getTokenFromString($tokenString);
 
$this->claimsValidator->validate($token);
$this->signatureValidator->validate($token);
 
return $token;
}
}