Questa è una vecchia versione del documento!
A titolo di esempio proponiamo un esempio di client OIDC scritto in PhP. Il codice si avvale di una libreria che consente a un’applicazione di autenticare un utente tramite il flusso base di OpenID Connect.
Libreria: OpenID-Connect-PHP https://github.com/jumbojett/OpenID-Connect-PHP
Nel caso di questo esempio il redirect URL può essere la pagina stessa alla quale il client viene rediretto dal nostro OP dopo l'autenticazione.
<?php require 'vendor/autoload.php'; use Jumbojett\OpenIDConnectClient; $provider_url = "https://shibidp.unipr.it"; $client_id = ""; $client_secret = ""; $RedirectURL = ""; $oidc = new OpenIDConnectClient($provider_url,$client_id,$client_secret); $oidc->setResponseTypes(['id_token']); $oidc->setAllowImplicitFlow(true); $oidc->setRedirectURL($RedirectURL); $oidc->addScope(["openid","email","profile","spid"]); $oidc->addAuthParam(['response_mode' => 'form_post']); $auth = $oidc->authenticate(); $claims = $oidc->getVerifiedClaims(); if($auth && is_object($claims) && !empty(get_object_vars($claims))){ echo "Utente autenticato"; printObjectAsTable($claims); echo "<p>Parametro state inviato da request e ricevuto da response: " . $_REQUEST["state"]."</p>"; echo "</br>"; echo "<p>Parametro id_token non decodificato contenente i claims della tabella: ". $_REQUEST["id_token"]."</p>"; } else { echo "Utente non autenticato"; } function printObjectAsTable($obj) { echo "<p><table border='1' style='border-collapse: collapse;'>"; echo "<tr><th>Key</th><th>Value</th></tr>"; foreach ($obj as $key => $value) { echo "<tr><td>" . htmlspecialchars($key) . "</td><td>" . htmlspecialchars($value) . "</td></tr>"; } echo "</table></p>"; } ?>