facile-it / php-openid-client

PHP OpenID Client
36 stars 7 forks source link

Allow to set singular endpoints instead of the discovery one #17

Closed maicol07 closed 3 years ago

maicol07 commented 3 years ago

Currently, you can only get provider endpoints via the discovery one:

$issuer = (new IssuerBuilder())
    ->build('https://example.com/.well-known/openid-configuration');

The library should enable the user to set manually the endpoints since the discovery one is optional, as specified by the OpenID Connect specs.

thomasvargiu commented 3 years ago

Hi @maicol07,

you can create your Issuer instance like this:

use Facile\OpenIDClient\Issuer\Metadata\IssuerMetadata;
use Facile\OpenIDClient\Issuer\Issuer;
use Facile\JoseVerifier\JWK\JwksProviderBuilder;

$issuerMetadata = IssuerMetadata::fromArray([
    'issuer' => 'https://example.com',
    'authorization_endpoint' => 'https://example.com/auth',
    'token_endpoint' => 'https://example.com/token',
    'jwks_uri' => 'https://example.com/jwks',
    // other OpenID Provider Metadata (https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata)
]);
$jwksProvider = (new JwksProviderBuilder())
    ->setJwksUri($metadata->getJwksUri())
    ->build();
$issuer = new Issuer($issuerMetadata, $jwksProvider);