PHP code example of thomasvargiu / php-openid-client
1. Go to this page and download the library: Download thomasvargiu/php-openid-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
thomasvargiu / php-openid-client example snippets
use TMV\OpenIdClient\Client\Client;
use TMV\OpenIdClient\Issuer\IssuerFactory;
use TMV\OpenIdClient\Client\Metadata\ClientMetadata;
use TMV\OpenIdClient\Service\AuthorizationService;
use TMV\OpenIdClient\Service\UserinfoService;
use Psr\Http\Message\ServerRequestInterface;
$issuerFactory = new IssuerFactory();
$issuer = $issuerFactory->fromUri('https://example.com/.well-known/openid-configuration');
$clientMetadata = new ClientMetadata(
'client_id', // client_id
// other claims
[
'redirect_uris' => [
'https://my-rp.com/callback',
],
]
);
$client = new Client($issuer, $clientMetadata);
// Authorization
$authorizationService = new AuthorizationService();
$redirectAuthorizationUri = $authorizationService->getAuthorizationUri(
$client,
['login_hint' => 'user_username'] // custom params
);
// you can use this uri to redirect the user
// Get access token
/** @var ServerRequestInterface::class $serverRequest */
$serverRequest = null; // get your server request
$callbackParams = $authorizationService->getCallbackParams($serverRequest, $client);
$tokenSet = $authorizationService->callback($client, $callbackParams);
$idToken = $tokenSet->getIdToken(); // Unencrypted id_token
$accessToken = $tokenSet->getAccessToken(); // Access token
$refreshToken = $tokenSet->getRefreshToken(); // Refresh token
$claims = $tokenSet->claims(); // IdToken claims (if id_token is available)
// Refresh token
$tokenSet = $authorizationService->refresh($client, $tokenSet->getRefreshToken());
// Get user info
$userinfoService = new UserinfoService();
$userinfo = $userinfoService->getUserInfo($client, $tokenSet);
use Jose\Component\Core\AlgorithmManager;
use Jose\Component\Signature\Algorithm;
use Jose\Component\Encryption\Algorithm\KeyEncryption;
use Jose\Component\Encryption\Algorithm\ContentEncryption;
use Jose\Component\Signature\JWSVerifier;
use Jose\Component\Encryption\JWELoader;
use Jose\Component\Encryption\Serializer\CompactSerializer;
use Jose\Component\Encryption\Serializer\JWESerializerManager;
use Jose\Component\Encryption\JWEDecrypter;
use Jose\Component\Encryption\Compression\CompressionMethodManager;
use Jose\Component\Encryption\Compression\Deflate;
use TMV\OpenIdClient\Token\IdTokenVerifier;
use TMV\OpenIdClient\Token\TokenSetVerifier;
use TMV\OpenIdClient\Token\TokenSetFactory;
use TMV\OpenIdClient\Token\TokenDecrypter;
use TMV\OpenIdClient\Token\ResponseTokenVerifier;
use TMV\OpenIdClient\Service\AuthorizationService;
$algorithmManager = new AlgorithmManager([
new Algorithm\None(),
new Algorithm\RS256(),
new KeyEncryption\RSAOAEP(),
new ContentEncryption\A256CBCHS512(),
]);
$JWSVerifier = new JWSVerifier($algorithmManager);
$idTokenVerifier = new IdTokenVerifier($JWSVerifier);
$tokenSetVerifier = new TokenSetVerifier($idTokenVerifier);
$responseTokenVerifier = new ResponseTokenVerifier($JWSVerifier);
$JWELoader = new JWELoader(
new JWESerializerManager([new CompactSerializer()]),
new JWEDecrypter($algorithmManager, $algorithmManager, new CompressionMethodManager([new Deflate()])),
null
);
$tokenDecrypter = new TokenDecrypter($JWELoader);
$authorizationService = new AuthorizationService(
new TokenSetFactory(),
$tokenSetVerifier,
$responseTokenVerifier,
$tokenDecrypter,
$httpClient
);
use TMV\OpenIdClient\Service\IntrospectionService;
$service = new IntrospectionService();
$params = $service->introspect($client, $token);
use TMV\OpenIdClient\Service\RevocationService;
$service = new RevocationService();
$params = $service->revoke($client, $token);
use TMV\OpenIdClient\RequestObject\RequestObjectFactory;
use Jose\Component\Core\AlgorithmManager;
$algorithmManager = new AlgorithmManager([/* your algorithms */]);
$factory = new RequestObjectFactory($algorithmManager);
$requestObject = $factory->create($client, [/* custom params to
use TMV\OpenIdClient\Claims\AggregateParser;
use TMV\OpenIdClient\Claims\DistributedParser;
$aggregatedParser = new AggregateParser();
$claims = $aggregatedParser->unpack($client, $userinfo);
$distributedParser = new DistributedParser();
$claims = $distributedParser->fetch($client, $userinfo);
use TMV\OpenIdClient\Middleware\SessionCookieMiddleware;
$middleware = new SessionCookieMiddleware();
use TMV\OpenIdClient\Middleware\ClientProviderMiddleware;
$client = $container->get('openid.clients.default');
$middleware = new ClientProviderMiddleware($client);
use TMV\OpenIdClient\Middleware\AuthRequestProviderMiddleware;
use TMV\OpenIdClient\Authorization\AuthRequest;
$authRequest = AuthRequest::fromParams([
'scope' => 'openid',
// other params...
]);
$middleware = new AuthRequestProviderMiddleware($authRequest);
use TMV\OpenIdClient\Middleware\AuthRedirectHandler;
use TMV\OpenIdClient\Service\AuthorizationService;
/** @var AuthorizationService $authorizationService */
$authorizationService = $container->get(AuthorizationService::class);
$middleware = new AuthRedirectHandler($authorizationService);
use TMV\OpenIdClient\Middleware\CallbackMiddleware;
use TMV\OpenIdClient\Service\AuthorizationService;
/** @var AuthorizationService $authorizationService */
$authorizationService = $container->get(AuthorizationService::class);
$middleware = new CallbackMiddleware($authorizationService);
use TMV\OpenIdClient\Middleware\UserInfoMiddleware;
use TMV\OpenIdClient\Service\UserinfoService;
/** @var UserinfoService $userinfoService */
$userinfoService = $container->get(UserinfoService::class);
$middleware = new UserInfoMiddleware($userinfoService);
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.