Devons-nous présenter <ahref="http://www.google.com"class="urlextern"title="http://www.google.com"rel="nofollow">Google</a> ? La bonne nouvelle est que Google est un fournisseur OpenID-Connect standard, on peut ainsi aisément déléguer l'authentification de <abbrtitle="LemonLDAP::NG">LL::NG</abbr> à Google : <ahref="https://developers.google.com/identity/protocols/OpenIDConnect"class="urlextern"title="https://developers.google.com/identity/protocols/OpenIDConnect"rel="nofollow">https://developers.google.com/identity/protocols/OpenIDConnect</a>
</p>
<divclass="noteimportant">Google ne supporte pas la déconnexion via OpenID-Connect. Si on ferme la session <abbrtitle="LemonLDAP::NG">LL::NG</abbr>, celle de Google reste ouverte.
<h2class="sectionedit3"id="register_on_google">S'enregistrer chez Google</h2>
<divclass="level2">
<p>
Il faut un compte développer Google pour accéder à <ahref="https://console.developers.google.com/"class="urlextern"title="https://console.developers.google.com/"rel="nofollow">https://console.developers.google.com/</a>
</p>
<p>
Aller ensuite dans « <abbrtitle="Interface de programmation">API</abbr> Manager » et récupérer les nouveaux éléments (<code>client_id</code> and <code>client_secret</code>).
</p>
<p>
Il faut fournir les URLs de rappel, par exemple <ahref="https://auth.domain.com/?openidcallback=1"class="urlextern"title="https://auth.domain.com/?openidcallback=1"rel="nofollow">https://auth.domain.com/?openidcallback=1</a>.
</p>
</div><!-- EDIT3 SECTION "Register on Google" [508-818] -->
<h2class="sectionedit4"id="declare_google_in_your_llng_server">Déclarer Google dans le serveur LL::NG</h2>
<divclass="level2">
<p>
Aller dans le Manager et créer un fournisseur OpenID-Connect. On peut l'appeler <code>google</code> par exemple.
</p>
<p>
Cliquer sur <code>Métadonnées</code>, et utiliser l'<abbrtitle="Uniform Resource Locator">URL</abbr> de configuration OpenID-Connect pour les charger : <ahref="https://accounts.google.com/.well-known/openid-configuration"class="urlextern"title="https://accounts.google.com/.well-known/openid-configuration"rel="nofollow">https://accounts.google.com/.well-known/openid-configuration</a>.
</p>
<p>
On peut aussi charger les données JWKS depuis l'<abbrtitle="Uniform Resource Locator">URL</abbr><ahref="https://www.googleapis.com/oauth2/v3/certs"class="urlextern"title="https://www.googleapis.com/oauth2/v3/certs"rel="nofollow">https://www.googleapis.com/oauth2/v3/certs</a>. Mais comme Google change régulièrement ses clefs, il faut configurer un intervalle de rafraîchissement des données JKWS.
</p>
<p>
Aller dans les <code>attributs exportés</code> pour choisir les attributs à collecter. Google supporte ces champs :
<liclass="level1"><divclass="li"> Dans <code>Configuration</code>, enregistrer les <code>client_id</code> et <code>client_secret</code> donnés par Google. Préciser alors l'<abbrtitle="Uniform Resource Identifier">URI</abbr> de configuration avec <ahref="https://accounts.google.com/.well-known/openid-configuration"class="urlextern"title="https://accounts.google.com/.well-known/openid-configuration"rel="nofollow">https://accounts.google.com/.well-known/openid-configuration</a>, et le rafraîchissement JWKS, par exemple pour chaque jour : 86400.</div>
</li>
<liclass="level1"><divclass="li"> Dans <code>Protocole</code>, adapter le <code>scope</code> à l'attribut exporté voulu. On peut par exemple utiliser <code>openid profile email</code>.</div>
</li>
<liclass="level1"><divclass="li"> Dans <code>Affichage</code>, on peut indiquer le nom et le logo</div>
</li>
</ul>
</div><!-- EDIT4 SECTION "Declare Google in your LL::NG server" [819-] -->