How to read the module's messages
Several messages carry a {} or %s placeholder where the module inserts a specific value: the connection name, the domain, a URL or the reason for the failure. That value is the first thing to read, because it is what tells one case apart from another.
If you are still configuring the module, the setup guide walks through the settings; here we go message by message.
FIDO2 passkeys: registration and authentication
| Message | When it appears | What to do |
|---|---|---|
Passkeys (FIDO2) need Odoo 18 or later: on this Odoo use "TOTP Only" or "Either". | When you ask for passkeys on an Odoo older than 18 | Choose TOTP Only or Either, as the message says |
A user can have at most 5 active FIDO2 credentials (FR-044). Please revoke an existing credential before registering a new one. | When registering a new credential with 5 already active | Revoke an existing credential, then register the new one |
py_webauthn is not installed. FIDO2 registration is unavailable. | When trying to register FIDO2 without py_webauthn | Raise the missing py_webauthn with whoever runs your Odoo server |
py_webauthn is not installed. | Short form of the same warning, at more than one point in the FIDO2 flow | Same as the row above |
Failed to generate FIDO2 registration options: {} | When preparing a credential registration | Read the reason after the colon |
FIDO2 registration verification failed: {} | When verifying the registration | Read the reason and repeat the registration |
Failed to generate FIDO2 authentication options: {} | When preparing FIDO2 authentication | Read the reason given with the message |
FIDO2 credential not found for this user. | The module cannot find the credential for that user | Check the credential belongs to that user |
FIDO2 credential was registered for domain "{}" but current domain is "{}". Credential is invalid for this domain (FR-043). | The current domain is not the one used at registration | Sign in through the domain the message shows |
FIDO2 authentication verification failed: {} | When verifying the authentication | Read the reason the message adds |
On Odoo 17 there are no passkeys: the message itself says they need Odoo 18 or later and points you to TOTP Only or Either.
OIDC connections: discovery document and ID token
| Message | When it appears | What to do |
|---|---|---|
The connection "%s" already has its OIDC settings: edit them instead of adding others. | When adding further OIDC settings to a connection that already has them | Edit the existing settings |
Issuer URL is required to fetch the discovery document. | When requesting the discovery document without an Issuer URL | Enter the Issuer URL |
Failed to fetch OIDC discovery document from {}: {} | The document could not be fetched from that URL | Check the URL and the reason shown in the message |
JWKS URI is not configured. Fetch the discovery document first. | The JWKS URI is missing | Fetch the discovery document first |
ID token validation failed: malformed token ({}). | The ID token is malformed | Read the detail in brackets |
ID token validation failed: algorithm {!r} is not accepted. | The token's algorithm is not accepted | Check the named algorithm with whoever manages the IdP |
ID token validation failed: JWKS not readable ({}). | The JWKS keys cannot be read | Read the detail in brackets |
ID token validation failed: invalid signature. | The token signature is not valid | Review it with whoever manages the IdP |
ID token validation failed: missing claims. | Claims are missing from the token | Review it with whoever manages the IdP |
ID token validation failed: issuer mismatch. | The issuer does not match | Compare the issuer on the OIDC connection with the IdP's |
ID token validation failed: audience mismatch. | The audience does not match | Review the OIDC connection with whoever manages the IdP |
ID token validation failed: token expired. | The token has expired | Start the sign-in again |
ID token nonce mismatch: expected {} but got {} | The nonce received is not the one expected | Compare the two values in the message |
Every message starting with ID token validation failed appears while validating the token returned by the identity provider. The final part tells you which check failed.

SAML connections and IdP metadata
| Message | When it appears | What to do |
|---|---|---|
The connection "%s" already has its SAML settings: edit them instead of adding others. | When adding further SAML settings to a connection that already has them | Edit the existing settings |
Single Logout (SLO) is enabled but no IdP SLO URL is provided. Please enter the IdP SLO URL or disable SLO. | SLO switched on with no IdP SLO URL | Enter the IdP SLO URL or switch SLO off |
xml.etree.ElementTree is not available. | The module cannot find xml.etree.ElementTree | Raise it with whoever runs your Odoo server |
Failed to parse IdP metadata XML: {} | The IdP metadata XML could not be read | Check the XML and the reason the message adds |
Mappings, exemptions and the event log
| Message | When it appears | What to do |
|---|---|---|
Attribute mapping cannot belong to both a SAML config and an OIDC config. Please link it to exactly one. | The attribute mapping is linked to SAML and OIDC at once | Leave it linked to just one config |
Attribute mapping must be linked to either a SAML config or an OIDC config. | The attribute mapping is linked to neither | Link it to a SAML or OIDC config |
Group mapping cannot belong to both a SAML config and an OIDC config. | The group mapping is linked to both | Leave it on just one |
Group mapping must be linked to either a SAML config or an OIDC config. | The group mapping is linked to neither | Link it to a SAML or OIDC config |
Exemption expiry date must be today or in the future. Received: {} | The exemption expiry date is in the past | Use today's date or a future one |
Editing not allowed: authentication event log records are append-only (tamper-evident audit trail). | When trying to edit an authentication event log record | Nothing: the module does not allow editing them |
Deletion not allowed: authentication event log records are append-only (tamper-evident audit trail). | When trying to delete an event log record | Nothing: the module does not allow deleting them |

The two event log messages do not point to a configuration fault: the text says those records only accept new entries (append-only). If you are trying to correct something, that is not the place.
How FlexigoTech can help
If a message is not clear from its own text, we can go through it with you. FlexigoTech implements Odoo 17, 18, 19 and 20 and builds bespoke connectors and integrations. The module is published on Odoo Apps for 17, 18, 19 and 20, at €9 excluding VAT per Odoo version, as a one-off payment. If you are unsure whether it fits, see what it covers and on which version, and purchase details are on the module page.
Keep reading
Checked in the module's source code (version 20.0) and the linked sources
Sources
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_event_log.py
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_fido2_credential.py
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_idp_attribute_mapping.py
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_idp_group_mapping.py
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_mfa_exemption.py
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_mfa_policy.py
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_oidc_config.py
- Module source code: flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun paquete-BO/20.0 (249f0717): models/auth_saml_config.py
- apps.odoo.com/apps/modules/20.0/flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun
- apps.odoo.com/apps/modules/17.0/flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun
- apps.odoo.com/apps/modules/18.0/flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun
- apps.odoo.com/apps/modules/19.0/flexigo_2fa_sso_saml_oidc_modern_bundle_for_odoo_commun
- flexigotech.com/en/services.html
