Do you we have to present <ahref="http://www.google.com"class="urlextern"title="http://www.google.com"rel="nofollow">Google</a>? The good news is that Google is a standard OpenID Provider, and so you can easily delegate the authentication of <abbrtitle="LemonLDAP::NG">LL::NG</abbr> to 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 does not support logout trough OpenID Connect. If you close your session on <abbrtitle="LemonLDAP::NG">LL::NG</abbr> side, your Google session will still be open.
</div>
</div>
<!-- EDIT2 SECTION "Presentation" [68-507] -->
<h2class="sectionedit3"id="register_on_google">Register on Google</h2>
<divclass="level2">
<p>
You need a Google developer account to access to <ahref="https://console.developers.google.com/"class="urlextern"title="https://console.developers.google.com/"rel="nofollow">https://console.developers.google.com/</a>
</p>
<p>
Here you can go in <abbrtitle="Application Programming Interface">API</abbr> Manager and get new credentials (<code>client_id</code> and <code>client_secret</code>).
</p>
<p>
You need to provide the callback URLs, for example <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">Declare Google in your LL::NG server</h2>
<divclass="level2">
<p>
Go in Manager and create a new OpenID Connect provider. You can call it <code>google</code> for example.
</p>
<p>
Click on <code>Metadata</code>, and use the OpenID Connect configuration <abbrtitle="Uniform Resource Locator">URL</abbr> to load them: <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>
You can also load the JWKS data from the <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>. But as Google rotate their keys, we will also configure a refresh interval on JKWS data.
</p>
<p>
Go in <code>Exported attributes</code> to choose which attributes you want to collect. Google supports these claims:
<liclass="level1"><divclass="li"> In <code>Configuration</code>, register the <code>client_id</code> and <code>client_secret</code> given by Google. Set also the configuration <abbrtitle="Uniform Resource Identifier">URI</abbr> with <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>, and JWKS refresh, for example every day: 86400.</div>
</li>
<liclass="level1"><divclass="li"> In <code>Protocol</code>, adapt the <code>scope</code> to the exported attributes you want. You can for example use <code>openid profile email</code>.</div>
</li>
<liclass="level1"><divclass="li"> In <code>Display</code>, you can set the name and the logo</div>
</li>
</ul>
</div>
<!-- EDIT4 SECTION "Declare Google in your LL::NG server" [819-] --></div>