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

authorizationgranttype ..

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

  • ClientId : l’identifiant représentant la GUI Flower
  • ClientSecret : le mot de passe 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 : Le 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

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


Classe de document 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: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>


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.