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 GUI FlowerDocs afin de fournir à ses utilisateurs un mécanisme de Single Sign On.


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