- Home
- Apps
- SaaS Tools
- MFA / 2FA Enforcement for Odoo
Illustrative previewA build-to-order Odoo module that turns two-factor authentication from an optional user preference into an
enforced org-wide policy — mandating TOTP or passkeys per security group, with enrollment grace periods, admin-managed backup codes, and trusted-device controls.
ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19 database.
What is MFA / 2FA Enforcement for Odoo?
A build-to-order Odoo module that turns two-factor authentication from an optional user preference into an enforced org-wide policy — mandating TOTP or passkeys per security group, with enrollment grace periods, admin-managed backup codes, and trusted-device controls. ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19 database. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Odoo ships two-factor authentication through the core auth_totp module, but it is fundamentally opt-in: each user decides for themselves whether to enable it from their preferences. For a security-conscious organisation — one pursuing SOC 2, ISO 27001, or an insurer's cyber questionnaire — "some users have 2FA turned on" is not a controllable state. An auditor asking "prove every account with access to financial and HR data uses a second factor" cannot be answered from the standard setup, and an administrator has no supported way to require enrollment, no visibility into who is covered, and no lever to block a login that skipped the second factor. This is exactly where Odoo native runs out of road, and where a bolt-on policy layer is needed.
We build a clean-room enforcement module that extends auth_totp rather than replacing it, so you keep Odoo's proven TOTP mechanism and add governance on top. At the data layer we introduce policy models (models.Model with @api.depends computed enrollment states) that bind a 2FA requirement to res.groups, letting you mandate a second factor org-wide or scope it to specific security groups — for example, require it for Accounting and Settings administrators while leaving read-only portal users optional. A configurable enrollment grace period gives users a defined window to set up their authenticator before access is hard-locked, driven by scheduled automated actions (ir.cron) that send reminder emails through the mail framework to anyone still not enrolled. Beyond authenticator-app TOTP, we implement WebAuthn / passkey (FIDO2) support so phishing-resistant hardware and platform authenticators can serve as the second factor. Enforcement is applied at the authentication controller and session layer — overriding the web login flow and the relevant RPC/session paths — so a login that bypasses 2FA when policy requires it is refused rather than merely discouraged, and step-up re-authentication can be demanded before sensitive administrative actions such as Settings changes.
Around the core enforcement we build the operational tooling security teams actually need day-to-day. A compliance dashboard (OWL/QWeb views backed by computed fields) shows enrollment status across every user, filterable by group, so the "who is covered" question has a one-screen answer. Administrators can generate and regenerate one-time-use backup recovery codes with usage tracking, and reset a specific user's 2FA for lost-device recovery — each action writing an audit entry via mail.thread so the reset is attributable and reviewable, without resorting to a full user reset. Trusted-device "remember this browser" is included with an administrator-set maximum duration and per-user revocation, and admins receive notification alerts whenever a user disables or resets their own second factor. Access is governed through ir.model.access.csv and record rules so that policy configuration and the audit trail are visible only to the roles that should see them.
Because this is a build-to-order engagement, nothing is a pre-existing download. After a short scoping call we confirm your Odoo version (17.0, 18.0, or 19.0), Community or Enterprise edition, which groups must be enforced, your grace-period and trusted-device policies, and any SSO or provisioning systems already in play. We then build against your target version, validate on a staging copy of your database through UAT, and deliver installable source with a documented rollback plan before touching production. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); multi-company enforcement, passkey/FIDO2 hardware rollout across many sites, deeper SSO or identity-provider integration, and larger user-migration volumes increase the quoted scope. You receive a fixed quote after the scoping call — the from-price is a starting point, not a firm figure.
What you get
- Installable source code for your Odoo major version (17.0, 18.0, or 19.0), built clean-room extending core `auth_totp`
- Installation and configuration on your staging environment, including group policy, grace-period, and trusted-device setup
- Technical documentation: module architecture, models, enforcement points, and configuration reference
- Administrator and end-user guide plus a live training session for your admin/compliance owners
- UAT sign-off on a staging copy of your database with a documented, tested rollback plan before production go-live
- Post-go-live support window for defect fixes and configuration adjustments
- Private git repository handover with full commit history and `__manifest__.py` version pinned to your Odoo release
Who this is for
Security & Compliance Owner
Responsible for SOC 2 or ISO 27001 controls and needs to guarantee — and evidence — that every account with sensitive access uses a second factor. Buys this to turn 2FA from an opt-in preference into an enforced, auditable policy with a coverage dashboard they can screenshot for auditors.
Odoo System Administrator
Runs the day-to-day Odoo instance and handles account lifecycle. Needs supported tooling to mandate enrollment per group, hand out and regenerate backup codes, reset a locked-out user's 2FA after a lost device, and revoke trusted devices — all without hacking the database or fully resetting users.
IT Director / CISO
Accountable for the organisation's authentication posture across systems. Wants phishing-resistant passkeys as an option, step-up re-auth on privileged actions, and alerting when users weaken their own security, so Odoo access aligns with the wider identity and access policy.
Managed-Service / ERP Partner
Delivers Odoo to multiple end clients and needs a consistent, reusable enforcement layer with clean source and a git handover, so 2FA governance can be standardised across engagements rather than reinvented per project.
How MFA / 2FA Enforcement for Odoo Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| 2FA enforcement scope | Org-wide or per `res.groups`, policy-driven | Whatever you specify and can maintain | Often global on/off, limited group logic | Opt-in per user; cannot be required |
| Enrollment grace period | Configurable countdown with cron reminders then hard-lock | Buildable but you own the scheduler logic | Sometimes present, rarely configurable | None — no concept of required enrollment |
| Passkey / FIDO2 second factor | WebAuthn passkeys alongside authenticator TOTP | Possible with significant effort | Usually TOTP-only | TOTP only |
| Compliance coverage view | Dashboard of enrollment status filterable by group | Only if you build and maintain the reports | Basic or absent | No coverage reporting |
| Backup codes & admin reset | One-time-use codes, regenerate, audited admin reset | Depends entirely on build scope | Codes sometimes, audited reset rare | Basic recovery, no per-user admin reset workflow |
| Step-up re-authentication | Fresh challenge before sensitive admin actions | Custom hook work required | Rarely offered | Not available |
| Ownership & support | Full source, git handover, support window, version-pinned | You own all maintenance and future upgrades | Vendor-locked; upgrades on their timeline | Maintained by the platform, but no policy layer |
| Delivery model | Build-to-order, UAT on staging, rollback plan, one working week | Timeline and quality depend on your team | Instant install but generic fit | Already present, but insufficient for enforcement |
Frequently Asked Questions about MFA / 2FA Enforcement
How long does delivery take?
This is a build-to-order module, not an instant download. After a scoping call to confirm your Odoo version, edition, enforced groups, and policies, typical delivery is one working week from confirmed scope. We build against your target version, validate on a staging copy through UAT, and only then deploy to production with a rollback plan in place.
Doesn't Odoo already include two-factor authentication?
Odoo core (`auth_totp`) provides TOTP, but it is opt-in per user — each person chooses whether to enable it, there is no way to require it, no coverage visibility, and no supported block on logins that skip it. We extend that same core mechanism with org-wide and per-group enforcement, grace periods, a compliance dashboard, backup-code and reset tooling, passkeys, and step-up re-auth. We keep Odoo's proven TOTP and add the governance layer around it.
How does pricing and scoping work?
Pricing starts from $999 as an indicative, single-company base-scope figure — a starting point, not a fixed price. Drivers such as multi-company enforcement, passkey/FIDO2 hardware rollout, deeper SSO or identity-provider integration, and larger user-migration volumes increase the quoted scope. After the scoping call you receive a fixed written quote for your exact requirements.
What about support and updates after go-live?
Every engagement includes a post-go-live support window for defect fixes and configuration adjustments, and you receive the full source via a private git repository so your team retains ownership. Because the module is version-pinned in its `__manifest__.py`, migrating it to a future Odoo release (for example 18.0 to 19.0) is handled as a separate scoped update; we can quote that when you plan the upgrade.
Will this work with Odoo Community, or only Enterprise?
It is built on core modules (`base`, `web`, `auth_totp`, `mail`) available in both editions, so it works on Community and Enterprise. We confirm your edition during scoping because some surrounding behaviours differ between the two, and we build and test against your specific edition and major version (17.0, 18.0, or 19.0).
Can it enforce 2FA on API and portal logins, not just the web UI?
Yes. Enforcement is applied at the authentication controller and session layer rather than only the browser login form, so internal, portal, and RPC/session authentication paths that skip a required second factor are refused. We also implement step-up re-authentication so a fresh second-factor challenge can be required before sensitive administrative actions such as Settings changes.
What happens when a user loses their authenticator device?
There are two recovery paths built in. Users can consume one of their admin-issued, one-time-use backup recovery codes, and administrators can reset an individual user's 2FA for lost-device recovery — which writes an audit entry via `mail.thread` — without resetting the whole user account. Admins can also revoke trusted devices per user, and are alerted when a user disables or resets their own second factor.
Related Modules

Merge Sales Orders
A build-to-order Odoo module that consolidates multiple quotations and sales orders for the same customer into one clean document, with configurable line-merge rules and full audit traceability. ECOSIRE scopes, builds, installs, and supports it on your instance.

Message Templates Everywhere
A build-to-order Odoo extension that lets your team fire pre-approved WhatsApp, Instagram, and Messenger messages straight from sales orders, invoices, and CRM records — with dynamic field merging and a full audit trail in the chatter. ECOSIRE scopes, builds, installs, and supports it for you.

Microsoft 365 SharePoint & OneDrive Document Integration
A build-to-order Odoo module that stores, syncs, and edits your Odoo attachments directly in Microsoft 365 SharePoint and OneDrive — with two-way linking, Office Online editing, and filestore offload over the Microsoft Graph API. ECOSIRE scopes, builds, installs, and supports it for your tenant.

Midtrans Payment Gateway for Odoo (Indonesia)
Indonesian cards, e-wallets, and VA bank transfer via Midtrans Snap on Odoo — built, installed and supported by ECOSIRE.
MFA / 2FA Enforcement
A build-to-order Odoo module that turns two-factor authentication from an optional user preference into an enforced org-wide policy — mandating TOTP or passkeys per security group, with enrollment grace periods, admin-managed backup codes, and trusted-device controls. ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19 database.
- Group-scoped enforcement policies binding a mandatory-2FA flag to `res.groups`, so you require a second factor org-wide or per security group (e.g. Accounting, Settings admins) while leaving chosen groups optional
- Extends Odoo core `auth_totp` rather than replacing it — the proven TOTP secret and verification stay intact; the module adds the governance and enforcement layer above it
- Configurable enrollment grace period with a defined countdown per user, after which access is hard-locked until a second factor is set up
- WebAuthn / passkey (FIDO2) second-factor support for platform and hardware authenticators, offered alongside authenticator-app TOTP