France Connect

Presentation
FranceConnect is an authentication platform made by French government. It relies on OpenID Connect protocol.
Two platforms are available:
FranceConnect: eIDAS low level of assurance (
eidas1)FranceConnect+: eIDAS substantial (
eidas2) or high (eidas3) level of assurance. It enforces stronger cryptographic requirements: tokens are signed with elliptic curve keys and encrypted.
LemonLDAP::NG can be used as Relying Party (Fournisseur de Service) for both platforms.
Official documentation is available on partner website.
New in version 2.19.0: Elliptic curve algorithms and JWT encryption required by FranceConnect+.
Register on FranceConnect
Access to FranceConnect / FranceConnect+ is granted through a Datapass request, then the service is configured in the partner space.
You will need to provide:
Redirect URL (callback):
https://auth.example.com/?openidconnectcallback=1Post-logout redirect URL:
https://auth.example.com/oauth2/rlogoutreturnFor FranceConnect+ only, the JWKS URL of your portal, which contains the public key used by FranceConnect+ to encrypt tokens:
https://auth.example.com/oauth2/jwks
You will then get a client_id and a client_secret.
Endpoints
FranceConnect publishes its metadata, so you only have to set the Configuration endpoint in LemonLDAP::NG:
Platform |
Environment |
Configuration endpoint |
|---|---|---|
FranceConnect |
Integration |
|
FranceConnect |
Production |
|
FranceConnect+ |
Integration |
|
FranceConnect+ |
Production |
|
Tip
Check the endpoints page of partner documentation if these URLs change.
Scopes and “identité pivot”
The identité pivot (pivot identity) is the set of claims identifying a
person: given_name, family_name, birthdate, gender,
birthplace and birthcountry.
Main scopes:
Scope |
Returned claims |
|---|---|
|
|
|
|
|
|
|
|
|
claim with the same name |
|
pivot identity, plus the same claims prefixed with |
Note
given_name_arrayis not available on FranceConnect+rnipp_*claims come from the RNIPP registry. They don’t provide any level of assurance and should only be used for reconciliation with your own repositories.The scopes you can use are the ones granted by your Datapass request.
See the scopes page for the full list.
Declare FranceConnect in your LemonLDAP::NG server
Go in Manager and create a new OpenID Connect provider, for example
france-connect or france-connect-plus. If you need both platforms,
declare two providers.
In Exported attributes, map the session attributes to FranceConnect
claims, for example:
uid=>subgivenName=>given_namesn=>family_namebirthdate=>birthdategender=>genderbirthplace=>birthplacebirthcountry=>birthcountrymail=>email
Then go in Options:
Configuration:Configuration endpoint: see Endpoints
Client ID / Client secret: values given by FranceConnect
PKCE required:
On(recommended,S256is supported)Issuer required (RFC 9207):
On(recommended)Store ID token:
On. FranceConnect requires theid_token_hintparameter at logout
Protocol:Scope: for example
openid identite_pivot emailACR values: see below
Use nonce:
On(mandatory)Token endpoint authentication method:
client_secret_post(default)
Display: set the name and the logo
FranceConnect
ACR values:
eidas1
FranceConnect accepts ES256 and RS256 signatures. Tokens are not
encrypted, so no encryption key is needed.
FranceConnect+
FranceConnect+ only accepts these algorithms:
Usage |
Algorithms |
|---|---|
ID Token / UserInfo signature |
|
ID Token / UserInfo encryption ( |
|
ID Token / UserInfo encryption ( |
|
Signed authorization requests, |
|
Tokens are always encrypted, so you must define an encryption key:
Go in
OpenID Connect Service>Security>KeysGenerate an encryption key: choose
ECtype to useECDH-ES, orRSAtype to useRSA-OAEP/RSA-OAEP-256. LemonLDAP::NG generates EC keys on theP-256curve.The public key is published in
https://auth.example.com/oauth2/jwks: give this URL to FranceConnect+ and choose the matching algorithms in the partner space
LemonLDAP::NG will automatically decrypt ID Token and UserInfo responses, and check their signature using FranceConnect+ JWKS.
In the provider options:
ACR values:
eidas2(oreidas3if you require the high level of assurance). LemonLDAP::NG sends this value in the authorization request and rejects the authentication if theacrclaim of the ID Token does not match.
If you want to use private_key_jwt for token endpoint authentication or
signed authorization requests, your signature key must be an EC key and
the selected algorithm must be ES256.
Tip
To give a higher authentication level to users authenticated by FranceConnect+, you can use Choice or Combination modules with a dedicated authentication level.