Passkeys

auth_passkey
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/auth_passkey
VERSION
VERSION 1.1
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Thibault Delavallée, Denis Ledoux, Géry Debongnie, qsm-odoo, Toufik Ben Jaa, Julien Castiaux, Romeo Fragomeli, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, William Braeckman, Louis Wicket (wil), Victor Piryns (pivi), Dylan Kiss (dyki), bram1000, thle-odoo, Krzysztof Magusiak (krma), Basioni (basm)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The implementation of Passkeys using the webauthn protocol.
===========================================================

Passkeys are a secure alternative to a username and a password.
When a user logs in with a Passkey, MFA will not be required.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
auth_passkey_key_create_view_form Create Passkey Wizard Form auth.passkey.key.create form New
auth_passkey_key_rename auth.passkey.key.rename auth.passkey.key form New
auth_passkey_key_view_kanban auth.passkey.key.kanban auth.passkey.key kanban New
auth_passkey_login auth_passkey_login ir.ui.view qweb Inherits web.login
auth_passkey_login_oauth Passkey Login OAuth ir.ui.view qweb Inherits web.login_oauth
auth_passkey_users_form auth.passkey.users.form res.users xpath Inherits base.view_users_form
auth_passkey_users_preferences auth.passkey.users.preferences res.users xpath Inherits base.view_users_form_simple_modif
res_users_identitycheck_view_form_passkey res.users.identitycheck xpath Inherits base.res_users_identitycheck_view_form
Models touched (4)

New fields (5)
  • create_uid Many2one → res.users
    index=True args: 'res.users'
  • credential_identifier Char
    groups='base.group_system' required=True
  • name Char
    required=True
  • public_key Char
    compute='_compute_public_key' groups='base.group_system' inverse='_inverse_public_key' required=True
  • sign_count Integer
    default=0 groups='base.group_system'
Public methods (4)
  • action_delete_passkey(self)
    @check_identity
  • action_rename_passkey(self)
  • init(self)
  • unlink(self)

New fields (1)
  • name Char
    required=True args: 'Name'
Public methods (1)
  • make_key(self, registration=None)
    @check_identity

New fields (1)
  • auth_passkey_key_ids One2many → auth.passkey.key
    args: 'auth.passkey.key', 'create_uid'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • action_create_passkey(self)
    @check_identity

New fields (1)
  • auth_method Selection
    selection_add=[('webauthn', 'Passkey')]
Public methods (1)
  • action_use_password(self)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/auth_passkey
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Denis Ledoux, Odoo Online, William Braeckman, Romain Estievenart, odoo, Louis Wicket (wil), Dylan Kiss (dyki), bram1000, omra-odoo, sami odoo, Krzysztof Magusiak (krma)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base_setup
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The implementation of Passkeys using the webauthn protocol.
===========================================================

Passkeys are a secure alternative to a username and a password.
When a user logs in with a Passkey, MFA will not be required.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
auth_passkey_key_create_view_form Create Passkey Wizard Form auth.passkey.key.create form New
auth_passkey_key_rename auth.passkey.key.rename auth.passkey.key form New
auth_passkey_login auth_passkey_login ir.ui.view qweb Inherits web.login
auth_passkey_users_form auth.passkey.users.form res.users page Inherits base.view_users_form
auth_passkey_users_preferences auth.passkey.users.preferences res.users page Inherits base.view_users_form_simple_modif
res_users_identitycheck_view_form_passkey res.users.identitycheck xpath Inherits base.res_users_identitycheck_view_form
Models touched (3)

New fields (4)
  • credential_identifier Char
    groups='base.group_system' required=True
  • name Char
    required=True
  • public_key Char
    compute='_compute_public_key' groups='base.group_system' inverse='_inverse_public_key' required=True
  • sign_count Integer
    default=0 groups='base.group_system'
Public methods (4)
  • action_delete_passkey(self)
    @check_identity
  • action_rename_passkey(self)
  • init(self)
  • unlink(self)

New fields (1)
  • name Char
    required=True args: 'Name'
Public methods (1)
  • make_key(self, registration=None)
    @check_identity

New fields (1)
  • auth_passkey_key_ids One2many → auth.passkey.key
    args: 'auth.passkey.key', 'create_uid'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • action_create_passkey(self)
    @check_identity