PHP implementation of https://openid.net/specs/openid-connect-core-1_0.html
Via Composer
$ composer require srako/openid-connect
use Srako\OpenIDConnect\ClientMetadata;
use Srako\OpenIDConnect\ClientFactory;
$issuerUrl = 'https://example.com';
$clientMetadata = new ClientMetadata('clientid', 'clientsecret', 'https://example.com/callback');
$client = ClientFactory::create($issuerUrl, $clientMetadata);
Manually
use Srako\OpenIDConnect\Client;
use Srako\OpenIDConnect\ClientMetadata;
use Srako\OpenIDConnect\Config;
use Srako\OpenIDConnect\Http\HttpClientFactory;
use Srako\OpenIDConnect\Token\TokenVerifierFactory;
use Srako\OpenIDConnect\ProviderMetadata;
$clientMetadata = new ClientMetadata('clientid', 'clientsecret', 'https://example.com/callback');
$providerMetadata = new ProviderMetadata([
ProviderMetadata::AUTHORIZATION_ENDPOINT => 'https://example.com/authorize',
ProviderMetadata::TOKEN_ENDPOINT => 'https://example.com/token',
// ...
])
$config = new Config($providerMetadata, $clientMetadata);
$client = new Client($config, HttpClientFactory::create());
use Srako\OpenIDConnect\Param\AuthorizationParams;
$state = bin2hex(random_bytes(8));
$_SESSION['oauth_state'] = $state;
$authorizationParams = new AuthorizationParams([
AuthorizationParams::SCOPE => 'openid profile',
AuthorizationParams::STATE => $state,
]);
$url = $client->getAuthorizationUrl($authorizationParams);
header('Location: ' . $url);
exit();
use Srako\OpenIDConnect\Param\CallbackParams;
use Srako\OpenIDConnect\Param\CallbackChecks;
$tokens = $client->handleCallback(
new CallbackParams($_GET),
new CallbackChecks($_SESSION['oauth_state'])
);
use Srako\OpenIDConnect\Grant\ClientCredentials;
use Srako\OpenIDConnect\Param\TokenParams;
$tokens = $client->requestTokens(
new TokenParams(
new ClientCredentials(),
[
TokenParams::SCOPE => 'some scope'
]
)
);
See examples for more
The MIT License (MIT). Please see License File for more information.