OpenID Connect

Un pour tous, tous pour un

Basé sur le protocole OAuth 2 et son mécanisme de code d’autorisation, OpenID Connect est utilisé par la FlowerDocs GUI afin de fournir à ses utilisateurs un mécanisme de Single Sign On.


La clé secrète de FlowerDocs Core doit être partagée avec FlowerDocs GUI pour pouvoir utiliser ce mécanisme. Il est donc nécessaire de renseigner, dans le fichier de configuration de FlowerDocs GUI, la même valeur pour la propriété token.key que pour FlowerDocs Core.

Configuration

Ce mécanisme d’authentification est configurable depuis la console d’administration FlowerDocs. Les informations listées ci-dessous peuvent être configurées :

  • ClientId : l’identifiant représentant FlowerDocs GUI
  • ClientSecret : le mot de passe associé à l’identifiant
  • RedirectUriTemplate : template utilisé pour la génération du paramètre redirect_uri (la valeur doit être définie à {baseUrl}/login/oauth2/code/{registrationId})
  • Scope : les scopes OAuth 2.0 (à minima openid et email)
  • AuthorizationUri : Endpoint d’autorisation de l’utilisateur
  • TokenUri : Endpoint permettant de récupérer les jetons
  • JwkSetUri : Endpoint utilisé pour accéder à la clé publique (JWK) du serveur d’autorisations permettant de valider les informations reçues
  • UserInfoUri : Endpoint exposant les attributs (ou claims) des utilisateurs
  • UserNameAttributeName : Nom de l’attribut à utiliser comme identifiant de l’utilisateur
  • RegistrationId : Identifiant unique du serveur d’autorisation
  • ClientName : Libellé du client
  • Icon : Icône Font Awesome à afficher sur la page de connexion
  • MemberOfAttribute : Nom de l’attribut permettant de fournir des groupes

Pour plus de détails, consultez les spécifications OpenId Connect


Classe de documents OAuthClientConfiguration

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns5:DocumentClass category="DOCUMENT" active="false" technical="true" xmlns="http://flower.com/docs/domain/common"
	xmlns:ns2="http://flower.com/docs/domain/componentclass" xmlns:ns3="http://flower.com/docs/domain/i18n"
	xmlns:ns5="http://flower.com/docs/domain/documentclass">
	<id>OAuthClientConfiguration</id>
	<ns2:tagReferences tagName="ClientId" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="ClientSecret" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="RedirectUriTemplate" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="Scope" mandatory="false" multivalued="true" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="AuthorizationUri" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="TokenUri" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="JwkSetUri" mandatory="false" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="UserInfoUri" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="UserNameAttributeName" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="RegistrationId" mandatory="true" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="ClientName" mandatory="false" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="Icon" mandatory="false" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:tagReferences tagName="MemberOfAttribute" mandatory="false" multivalued="false" technical="false" readonly="false" order="0" />
	<ns2:displayNames language="EN">
		<ns3:value>oAuthClients configuration</ns3:value>
	</ns2:displayNames>
	<ns2:displayNames language="FR">
		<ns3:value>Configuration des oAuth clients </ns3:value>
	</ns2:displayNames>
</ns5:DocumentClass>


Exemple pour Google

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:Document category="DOCUMENT" name="Google" xmlns="http://flower.com/docs/domain/common"
	xmlns:ns2="http://flower.com/docs/domain/component" xmlns:ns3="http://flower.com/docs/domain/document">
	<id>Google</id>
	<ns2:data>
		<ns2:classId>OAuthClientConfiguration</ns2:classId>
	</ns2:data>
	<ns2:Tags>
		<ns2:tags name="ClientId" readOnly="false">
			<ns2:value>***</ns2:value>
		</ns2:tags>
		<ns2:tags name="ClientSecret" readOnly="false">
			<ns2:value>***</ns2:value>
		</ns2:tags>
		<ns2:tags name="RedirectUriTemplate" readOnly="false">
			<ns2:value>{baseUrl}/login/oauth2/code/{registrationId}</ns2:value>
		</ns2:tags>
		<ns2:tags name="Scope" readOnly="false">
			<ns2:value>openid</ns2:value>
			<ns2:value>profile</ns2:value>
			<ns2:value>email</ns2:value>
			<ns2:value>address</ns2:value>
			<ns2:value>phone</ns2:value>
		</ns2:tags>
		<ns2:tags name="AuthorizationUri" readOnly="false">
			<ns2:value>https://accounts.google.com/o/oauth2/v2/auth</ns2:value>
		</ns2:tags>
		<ns2:tags name="TokenUri" readOnly="false">
			<ns2:value>https://www.googleapis.com/oauth2/v4/token</ns2:value>
		</ns2:tags>
		<ns2:tags name="JwkSetUri" readOnly="false">
			<ns2:value>https://www.googleapis.com/oauth2/v3/certs</ns2:value>
		</ns2:tags>
		<ns2:tags name="UserInfoUri" readOnly="false">
			<ns2:value>https://www.googleapis.com/oauth2/v3/userinfo</ns2:value>
		</ns2:tags>
		<ns2:tags name="UserNameAttributeName" readOnly="false">
			<ns2:value>sub</ns2:value>
		</ns2:tags>
		<ns2:tags name="RegistrationId" readOnly="false">
			<ns2:value>google</ns2:value>
		</ns2:tags>
		<ns2:tags name="ClientName" readOnly="false">
			<ns2:value>Google</ns2:value>
		</ns2:tags>
		<ns2:tags name="Icon" readOnly="false">
			<ns2:value>border-danger text-danger mdi mdi-google</ns2:value>
		</ns2:tags>
	</ns2:Tags>
</ns3:Document>

Connexion automatique

Pour authentifier un utilisateur automatiquement à l’aide de ce mécanisme d’authentification, il est possible d’ajouter le paramètre sso=auto dans l’URL.

Avec ce paramètre, l’utilisateur, lorsqu’il accède à la page de connexion est automatiquement authentifié en utilisant OpenId Connect.