# Google

## Présentation

Devons-nous présenter Google ? La bonne nouvelle est que Google est un fournisseur OpenID-Connect standard, on peut ainsi aisément déléguer l'authentification de LL::NG à Google : https://developers.google.com/identity/protocols/OpenIDConnect

Google ne supporte pas la déconnexion via OpenID-Connect. Si on ferme la session LL::NG, celle de Google reste ouverte.

## S'enregistrer chez Google

Il faut un compte développer Google pour accéder à https://console.developers.google.com/

Aller ensuite dans « API Manager » et récupérer les nouveaux éléments (`client_id` and `client_secret`).

Il faut fournir les URLs de rappel, par exemple https://auth.domain.com/?openidcallback=1.

## Déclarer Google dans le serveur LL::NG

Aller dans le Manager et créer un fournisseur OpenID-Connect. On peut l'appeler `google` par exemple.

Cliquer sur `Métadonnées`, et utiliser l'URL de configuration OpenID-Connect pour les charger : https://accounts.google.com/.well-known/openid-configuration.

On peut aussi charger les données JWKS depuis l'URL https://www.googleapis.com/oauth2/v3/certs. Mais comme Google change régulièrement ses clefs, il faut configurer un intervalle de rafraîchissement des données JKWS.

Aller dans les `attributs exportés` pour choisir les attributs à collecter. Google supporte ces champs :

- email
- email_verified
- family_name
- given_name
- locale
- nom
- picture
- sub

Aller ensuite dans `Options`:

- Dans `Configuration`, enregistrer les `client_id` et `client_secret` donnés par Google. Préciser alors l'URI de configuration avec https://accounts.google.com/.well-known/openid-configuration, et le rafraîchissement JWKS, par exemple pour chaque jour : 86400.
- Dans `Protocole`, adapter le `scope` à l'attribut exporté voulu. On peut par exemple utiliser `openid profile email`.
- Dans `Affichage`, on peut indiquer le nom et le logo