Skip to content

Commit

Permalink
fix: attempt verifier v0.5 support - requires more domain knowledge
Browse files Browse the repository at this point in the history
  • Loading branch information
Pavel Karfík committed Jun 13, 2024
1 parent 922093b commit 960d7b4
Show file tree
Hide file tree
Showing 15 changed files with 70 additions and 97 deletions.
11 changes: 6 additions & 5 deletions src/Client/Metadata/ClientMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Facile\OpenIDClient\Client\Metadata;

use Facile\JoseVerifier\TokenVerifierInterface;
use function array_diff;
use function array_key_exists;
use function array_keys;
Expand All @@ -13,14 +14,14 @@
use function implode;

/**
* @psalm-import-type ClientMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type ClientMetadataType from TokenVerifierInterface
*/
final class ClientMetadata implements ClientMetadataInterface
{
/**
* @var array<string, mixed>
*
* @psalm-var ClientMetadataObject
* @psalm-var ClientMetadataType
*/
private $metadata;

Expand All @@ -37,7 +38,7 @@ final class ClientMetadata implements ClientMetadataInterface
*
* @param array<string, mixed> $claims
*
* @psalm-param ClientMetadataObject|array<empty, empty> $claims
* @psalm-param ClientMetadataType|array<empty, empty> $claims
*/
public function __construct(string $clientId, array $claims = [])
{
Expand All @@ -47,7 +48,7 @@ public function __construct(string $clientId, array $claims = [])

$defaults = self::$defaults;

/** @var ClientMetadataObject $merged */
/** @var ClientMetadataType $merged */
$merged = array_merge($defaults, $claims, $requiredClaims);
$this->metadata = $merged;
}
Expand All @@ -57,7 +58,7 @@ public function __construct(string $clientId, array $claims = [])
*
* @return static
*
* @psalm-param ClientMetadataObject $claims
* @psalm-param ClientMetadataType $claims
*/
public static function fromArray(array $claims): self
{
Expand Down
13 changes: 7 additions & 6 deletions src/Client/Metadata/ClientMetadataInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@

namespace Facile\OpenIDClient\Client\Metadata;

use Facile\JoseVerifier\TokenVerifierInterface;
use JsonSerializable;

/**
* @psalm-import-type ClientMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type JWKObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type JWKSetObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type ClientMetadataType from TokenVerifierInterface
* @psalm-import-type JWTPayloadType from TokenVerifierInterface
* @psalm-import-type JWKSetType from TokenVerifierInterface
*/
interface ClientMetadataInterface extends JsonSerializable
{
Expand Down Expand Up @@ -65,21 +66,21 @@ public function getIntrospectionEndpointAuthMethod(): string;
public function getRevocationEndpointAuthMethod(): string;

/**
* @psalm-return JWKSetObject|null
* @psalm-return JWKSetType|null
*/
public function getJwks(): ?array;

/**
* @return array<string, mixed>
*
* @psalm-return ClientMetadataObject
* @psalm-return ClientMetadataType
*/
public function jsonSerialize(): array;

/**
* @return array<string, mixed>
*
* @psalm-return ClientMetadataObject
* @psalm-return ClientMetadataType
*/
public function toArray(): array;
}
6 changes: 4 additions & 2 deletions src/Client/Metadata/MetadataFactoryInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@

namespace Facile\OpenIDClient\Client\Metadata;

use Facile\JoseVerifier\TokenVerifierInterface;

/**
* @psalm-import-type ClientMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type ClientMetadataType from TokenVerifierInterface
*/
interface MetadataFactoryInterface
{
/**
* @param array<string, mixed> $metadata
*
* @psalm-param ClientMetadataObject $metadata
* @psalm-param ClientMetadataType $metadata
*/
public function fromArray(array $metadata): ClientMetadataInterface;
}
2 changes: 1 addition & 1 deletion src/Issuer/IssuerBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public function build(string $resource): IssuerInterface
$metadata = IssuerMetadata::fromArray($metadataBuilder->build()->fetch($resource));

$jwksProviderBuilder = $this->buildJwksProviderBuilder();
$jwksProviderBuilder->setJwksUri($metadata->getJwksUri());
$jwksProviderBuilder->withJwksUri($metadata->getJwksUri());
$jwksProvider = $jwksProviderBuilder->build();

return new Issuer(
Expand Down
9 changes: 5 additions & 4 deletions src/Issuer/Metadata/IssuerMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Facile\OpenIDClient\Issuer\Metadata;

use Facile\JoseVerifier\TokenVerifierInterface;
use function array_diff;
use function array_key_exists;
use function array_keys;
Expand All @@ -13,14 +14,14 @@
use function implode;

/**
* @psalm-import-type IssuerMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type IssuerMetadataType from TokenVerifierInterface
*/
final class IssuerMetadata implements IssuerMetadataInterface
{
/**
* @var array<string, mixed>
*
* @psalm-var IssuerMetadataObject
* @psalm-var IssuerMetadataType
*/
private $metadata;

Expand Down Expand Up @@ -48,7 +49,7 @@ public function __construct(
'jwks_uri' => $jwksUri,
];

/** @var IssuerMetadataObject $merged */
/** @var IssuerMetadataType $merged */
$merged = array_merge($claims, $requiredClaims);
$this->metadata = $merged;
}
Expand All @@ -58,7 +59,7 @@ public function __construct(
*
* @return static
*
* @psalm-param IssuerMetadataObject $claims
* @psalm-param IssuerMetadataType $claims
*/
public static function fromArray(array $claims): self
{
Expand Down
19 changes: 8 additions & 11 deletions src/Issuer/Metadata/IssuerMetadataInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,15 @@

namespace Facile\OpenIDClient\Issuer\Metadata;

use Facile\JoseVerifier\TokenVerifierInterface;
use JsonSerializable;

/**
* @psalm-import-type IssuerMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdDisplayType from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdClaimType from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdResponseType from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdResponseMode from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdGrantType from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdApplicationType from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdSubjectType from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type OpenIdAuthMethod from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type IssuerMetadataType from TokenVerifierInterface
* @psalm-import-type OpenIdResponseMode from TokenVerifierInterface
* @psalm-import-type OpenIdGrantType from TokenVerifierInterface
* @psalm-import-type OpenIdClaimType from TokenVerifierInterface
* @psalm-import-type OpenIdSubjectType from TokenVerifierInterface
*/
interface IssuerMetadataInterface extends JsonSerializable
{
Expand Down Expand Up @@ -348,14 +345,14 @@ public function getMtlsEndpointAliases(): array;
/**
* @return array<string, mixed>
*
* @psalm-return IssuerMetadataObject
* @psalm-return IssuerMetadataType
*/
public function jsonSerialize(): array;

/**
* @return array<string, mixed>
*
* @psalm-return IssuerMetadataObject
* @psalm-return IssuerMetadataType
*/
public function toArray(): array;
}
7 changes: 4 additions & 3 deletions src/Issuer/Metadata/Provider/CachedProviderDecorator.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Facile\OpenIDClient\Issuer\Metadata\Provider;

use Facile\JoseVerifier\TokenVerifierInterface;
use function is_array;
use function json_decode;
use function json_encode;
Expand All @@ -13,7 +14,7 @@
use function substr;

/**
* @psalm-import-type IssuerMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type IssuerMetadataType from TokenVerifierInterface
*/
final class CachedProviderDecorator implements RemoteProviderInterface
{
Expand Down Expand Up @@ -51,7 +52,7 @@ public function __construct(
/**
* @return array<string, mixed>
*
* @psalm-return IssuerMetadataObject
* @psalm-return IssuerMetadataType
*
* @psalm-suppress MixedReturnTypeCoercion
*/
Expand All @@ -63,7 +64,7 @@ public function fetch(string $uri): array
$cached = $this->cache->get($cacheId) ?? '';

try {
/** @psalm-var null|string|IssuerMetadataObject $data */
/** @psalm-var null|string|IssuerMetadataType $data */
$data = json_decode($cached, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
$data = null;
Expand Down
9 changes: 5 additions & 4 deletions src/Issuer/Metadata/Provider/DiscoveryProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Facile\OpenIDClient\Issuer\Metadata\Provider;

use Facile\JoseVerifier\TokenVerifierInterface;
use function array_key_exists;
use Facile\OpenIDClient\Exception\RuntimeException;
use function Facile\OpenIDClient\parse_metadata_response;
Expand All @@ -16,7 +17,7 @@
use function strpos;

/**
* @psalm-import-type IssuerMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type IssuerMetadataType from TokenVerifierInterface
*/
final class DiscoveryProvider implements DiscoveryProviderInterface
{
Expand Down Expand Up @@ -51,7 +52,7 @@ public function isAllowedUri(string $uri): bool
/**
* @return array<string, mixed>
*
* @psalm-return IssuerMetadataObject
* @psalm-return IssuerMetadataType
*
* @psalm-suppress MixedReturnTypeCoercion
*/
Expand Down Expand Up @@ -84,15 +85,15 @@ public function discovery(string $url): array
/**
* @return array<mixed, string>
*
* @psalm-return IssuerMetadataObject
* @psalm-return IssuerMetadataType
*/
private function fetchOpenIdConfiguration(string $uri): array
{
$request = $this->requestFactory->createRequest('GET', $uri)
->withHeader('accept', 'application/json');

try {
/** @psalm-var IssuerMetadataObject $data */
/** @psalm-var IssuerMetadataType $data */
$data = parse_metadata_response($this->client->sendRequest($request));
} catch (ClientExceptionInterface $e) {
throw new RuntimeException('Unable to fetch provider metadata', 0, $e);
Expand Down
6 changes: 4 additions & 2 deletions src/Issuer/Metadata/Provider/DiscoveryProviderInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@

namespace Facile\OpenIDClient\Issuer\Metadata\Provider;

use Facile\JoseVerifier\TokenVerifierInterface;

/**
* @psalm-import-type IssuerMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type IssuerMetadataType from TokenVerifierInterface
*/
interface DiscoveryProviderInterface extends RemoteProviderInterface
{
/**
* @return array<string, mixed>
*
* @psalm-return IssuerMetadataObject
* @psalm-return IssuerMetadataType
*/
public function discovery(string $url): array;
}
6 changes: 4 additions & 2 deletions src/Issuer/Metadata/Provider/RemoteProviderInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@

namespace Facile\OpenIDClient\Issuer\Metadata\Provider;

use Facile\JoseVerifier\TokenVerifierInterface;

/**
* @psalm-import-type IssuerMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type IssuerMetadataType from TokenVerifierInterface
*/
interface RemoteProviderInterface
{
Expand All @@ -14,7 +16,7 @@ public function isAllowedUri(string $uri): bool;
/**
* @return array<string, mixed>
*
* @psalm-return IssuerMetadataObject
* @psalm-return IssuerMetadataType
*/
public function fetch(string $uri): array;
}
5 changes: 3 additions & 2 deletions src/Issuer/Metadata/Provider/WebFingerProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Facile\OpenIDClient\Issuer\Metadata\Provider;

use Facile\JoseVerifier\TokenVerifierInterface;
use function array_key_exists;
use function array_pop;
use function explode;
Expand All @@ -24,7 +25,7 @@
use function substr;

/**
* @psalm-import-type IssuerMetadataObject from \Facile\JoseVerifier\Psalm\PsalmTypes
* @psalm-import-type IssuerMetadataType from TokenVerifierInterface
*/
final class WebFingerProvider implements RemoteProviderInterface, WebFingerProviderInterface
{
Expand Down Expand Up @@ -128,7 +129,7 @@ public function fetch(string $uri): array
throw new RuntimeException('Discovered issuer mismatch');
}

/** @var IssuerMetadataObject $metadata */
/** @var IssuerMetadataType $metadata */
return $metadata;
}

Expand Down
Loading

0 comments on commit 960d7b4

Please sign in to comment.