Authentication via LDAP

auth_ldap
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Olivier Dony, Denis Ledoux, Julien Castiaux, Tiffany Chang (tic), Gorash, William Braeckman, Mathieu Walravens, Louis Wicket (wil), Dylan Kiss (dyki), bram1000, Jeffrey Luo, Fasil | Python/Odoo Developer
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.list res.company.ldap list New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings setting Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    help='DN of the user search scope: all descendants of this base will be searched for users.' required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    help=' Filter used to look up user accounts in the LDAP database. It is an arbitrary LDAP filter in string representation. Any `%s` placeholder will be replaced by the login (identifier) provided by the user, the filter should contain at least one such placeholder.\n\n The filter must result in exactly one (1) result, otherwise the login will be considered invalid.\n\n Example (actual attributes depend on LDAP server and setup):\n\n (&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))\n\n or\n\n (|(mail=%s)(uid=%s))\n ' required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (1)
  • test_ldap_connection(self)
    Test the LDAP connection using the current configuration. Returns a dictionary with notification parameters indicating success or failure.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • change_password(self, old_passwd, new_passwd)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Denis Ledoux, Xavier Morel, Odoo Online, Christophe Monniez, Julien Castiaux, Tiffany Chang (tic), Gorash, Mathieu Walravens, Louis Wicket (wil), Dylan Kiss (dyki), bram1000, Louis (wil), joda-odoo, Jeffrey Luo, Krzysztof Magusiak (krma)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.list res.company.ldap list New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings setting Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    help='DN of the user search scope: all descendants of this base will be searched for users.' required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    help=' Filter used to look up user accounts in the LDAP database. It is an arbitrary LDAP filter in string representation. Any `%s` placeholder will be replaced by the login (identifier) provided by the user, the filter should contain at least one such placeholder.\n\n The filter must result in exactly one (1) result, otherwise the login will be considered invalid.\n\n Example (actual attributes depend on LDAP server and setup):\n\n (&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))\n\n or\n\n (|(mail=%s)(uid=%s))\n ' required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • change_password(self, old_passwd, new_passwd)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Denis Ledoux, Julien Castiaux, Victor Feyens, Tiffany Chang (tic), Gorash, Pierre Paridans, Mathieu Walravens, Louis Wicket (wil), Dylan Kiss (dyki), joda-odoo, Jeffrey Luo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.tree res.company.ldap tree New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings setting Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    help='DN of the user search scope: all descendants of this base will be searched for users.' required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    help=' Filter used to look up user accounts in the LDAP database. It is an arbitrary LDAP filter in string representation. Any `%s` placeholder will be replaced by the login (identifier) provided by the user, the filter should contain at least one such placeholder.\n\n The filter must result in exactly one (1) result, otherwise the login will be considered invalid.\n\n Example (actual attributes depend on LDAP server and setup):\n\n (&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))\n\n or\n\n (|(mail=%s)(uid=%s))\n ' required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • change_password(self, old_passwd, new_passwd)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Abdelouahab (abla), Mathieu Walravens, Martin Trigaux (mat), joda-odoo, Jeffrey Luo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:51
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.tree res.company.ldap tree New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings div Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    help='DN of the user search scope: all descendants of this base will be searched for users.' required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    help=' Filter used to look up user accounts in the LDAP database. It is an arbitrary LDAP filter in string representation. Any `%s` placeholder will be replaced by the login (identifier) provided by the user, the filter should contain at least one such placeholder.\n\n The filter must result in exactly one (1) result, otherwise the login will be considered invalid.\n\n Example (actual attributes depend on LDAP server and setup):\n\n (&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))\n\n or\n\n (|(mail=%s)(uid=%s))\n ' required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • change_password(self, old_passwd, new_passwd)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Xavier Morel, Xavier-Do, MANALIMALPANI, Abdelouahab (abla)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.tree res.company.ldap tree New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings div Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    help='DN of the user search scope: all descendants of this base will be searched for users.' required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    help=' Filter used to look up user accounts in the LDAP database. It is an arbitrary LDAP filter in string representation. Any `%s` placeholder will be replaced by the login (identifier) provided by the user, the filter should contain at least one such placeholder.\n\n The filter must result in exactly one (1) result, otherwise the login will be considered invalid.\n\n Example (actual attributes depend on LDAP server and setup):\n\n (&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))\n\n or\n\n (|(mail=%s)(uid=%s))\n ' required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • change_password(self, old_passwd, new_passwd)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYHidden/Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Denis Ledoux, Christophe Simonis, Yannick Tivisse, Christophe Monniez, Xavier-Do, MANALIMALPANI, Abdelouahab (abla)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:29
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.tree res.company.ldap tree New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings div Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • change_password(self, old_passwd, new_passwd)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYTools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Denis Ledoux, Christophe Simonis, Xavier Morel, Damien Bouvy, Yannick Tivisse, Christophe Monniez, Adrian Torres, Xavier-Do, Stéphane Bidoul (ACSONE), MANALIMALPANI, Abdelouahab (abla)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.tree res.company.ldap tree New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings div Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • change_password(self, old_passwd, new_passwd)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/12.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Christophe Simonis, Xavier Morel, Adrian Torres, Xavier-Do, MANALIMALPANI
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:57:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.tree res.company.ldap tree New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings div Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many
    readonly=False related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/11.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Xavier Morel, GitHub, Yannick Tivisse, Odoo Online
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:53:43
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
res_company_ldap_view_tree res.company.ldap.tree res.company.ldap tree New
res_config_settings_view_form res.config.settings.view.form.inherit.auth.ldap res.config.settings div Inherits base_setup.res_config_settings_view_form
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (4)

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (11)
  • company Many2one → res.company
    ondelete='cascade' required=True string='Company' args: 'res.company'
  • create_user Boolean
    default=True help='Automatically create local user accounts for new users authenticating via LDAP'
  • ldap_base Char
    required=True string='LDAP base'
  • ldap_binddn Char
    help='The user account on the LDAP server that is used to query the directory. Leave empty to connect anonymously.' args: 'LDAP binddn'
  • ldap_filter Char
    required=True string='LDAP filter'
  • ldap_password Char
    help='The password of the user account on the LDAP server that is used to query the directory.' string='LDAP password'
  • ldap_server Char
    default='127.0.0.1' required=True string='LDAP Server address'
  • ldap_server_port Integer
    default=389 required=True string='LDAP Server port'
  • ldap_tls Boolean
    help='Request secure TLS/SSL encryption when connecting to the LDAP server. This option requires a server with STARTTLS enabled, otherwise all authentication attempts will fail.' string='Use TLS'
  • sequence Integer
    default=10
  • user Many2one → res.users
    help='User to copy when creating new users' string='Template User' args: 'res.users'
Public methods (6)
  • authenticate(self, conf, login, password)
    Authenticate a user against the specified LDAP server. In order to prevent an unintended 'unauthenticated authentication', which is an anonymous bind with a valid dn and a blank password, check for empty passwords explicitely (:rfc:`4513#section-6.3.1`) :param dict conf: LDAP configuration :param login: username :param password: Password for the LDAP user :return: LDAP entry of authenticated user or False :rtype: dictionary of attributes
  • connect(self, conf)
    Connect to an LDAP server specified by an ldap configuration dictionary. :param dict conf: LDAP configuration :return: an LDAP object
  • get_ldap_dicts(self)
    @api.multi
    Retrieve res_company_ldap resources from the database in dictionary format. :return: ldap configurations :rtype: list of dictionaries
  • get_or_create_user(self, conf, login, ldap_entry)
    @api.model
    Retrieve an active resource of model res_users with the specified login. Create the user if it is not initially found. :param dict conf: LDAP configuration :param login: the user's login :param tuple ldap_entry: single LDAP result (dn, attrs) :return: res_users id :rtype: int
  • map_ldap_attributes(self, conf, login, ldap_entry)
    Compose values for a new resource of model res_users, based upon the retrieved ldap entry and the LDAP settings. :param dict conf: LDAP configuration :param login: the new user's login :param tuple ldap_entry: single LDAP result (dn, attrs) :return: parameters for a new resource of model res_users :rtype: dict
  • query(self, conf, filter, retrieve_attributes=None)
    Query an LDAP server with the filter argument and scope subtree. Allow for all authentication methods of the simple authentication method: - authenticated bind (non-empty binddn + valid password) - anonymous bind (empty binddn + empty password) - unauthenticated authentication (non-empty binddn + empty password) .. seealso:: :rfc:`4513#section-5.1` - LDAP: Simple Authentication Method. :param dict conf: LDAP configuration :param filter: valid LDAP filter :param list retrieve_attributes: LDAP attributes to be retrieved. If not specified, return all attributes. :return: ldap entries :rtype: list of tuples (dn, attrs)

New fields (1)
  • ldaps One2many
    related='company_id.ldaps' string='LDAP Parameters'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • check_credentials(self, password)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/10.0/auth_ldap
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Denis Ledoux, Christophe Simonis, Julien Legros, qdp-odoo, Yannick Tivisse, Jairo Llopis
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:50:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - base_setup
    - web_kanban
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
view_general_configuration_form_inherit_auth_ldap base.config.settings.form.inherit.auth.ldap base.config.settings xpath Inherits base_setup.view_general_configuration
view_ldap_installer_form res.company.ldap.form res.company.ldap form New
Models touched (3)

New fields (1)
  • ldaps One2many
    related='company_id.ldaps' string='LDAP Parameters *'
Public methods (0)

No public methods.

New fields (1)
  • ldaps One2many → res.company.ldap
    copy=True groups='base.group_system' string='LDAP Parameters' args: 'res.company.ldap', 'company'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • check_credentials(self, password)
    @api.model
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/9.0/auth_ldap
VERSION
VERSION 1.0
CATEGORY
CATEGORYExtra Tools
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Denis Ledoux, Christophe Simonis, Yannick Tivisse
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:48:30
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
company_form_view res.company.form.inherit.users_ldap res.company xpath Inherits base.view_company_form
view_ldap_installer_form ldap.installer.form res.company.ldap form New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/8.0/auth_ldap
VERSION
VERSION 1.0
CATEGORY
CATEGORYAuthentication
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Vo Minh Thu, Launchpad Translations on behalf of openerp, Denis Ledoux, Fabien Meghazi, Christophe Simonis, Richard Mathot, Aaron Bohy
WEBSITE
WEBSITEhttps://www.odoo.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:45:39
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
company_form_view res.company.form.inherit.users_ldap res.company xpath Inherits base.view_company_form
view_ldap_installer_form ldap.installer.form res.company.ldap form New
Models touched (0)

No models found for this module.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/7.0/auth_ldap
VERSION
VERSION 1.0
CATEGORY
CATEGORYAuthentication
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOpenERP SA
MAINTAINERS
MAINTAINERSOpenERP SA
COMMITTERS
COMMITTERSRaphael Collet, Cecile Tonglet, Odoo Translation Bot, Turkesh Patel (Open ERP), Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Vo Minh Thu, Hardik, pso (OpenERP), Launchpad Translations on behalf of openerp, Denis Ledoux, help, Christophe Simonis, Nicolas Martinelli
WEBSITE
WEBSITEhttp://www.openerp.com
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-05 23:43:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES python-ldap
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Adds support for authentication by LDAP server.
===============================================
This module allows users to login with their LDAP username and password, and
will automatically create OpenERP users for them on the fly.

**Note:** This module only work on servers who have Python's ``ldap`` module installed.

Configuration:
--------------
After installing this module, you need to configure the LDAP parameters in the
Configuration tab of the Company details. Different companies may have different
LDAP servers, as long as they have unique usernames (usernames need to be unique
in OpenERP, even across multiple companies).

Anonymous LDAP binding is also supported (for LDAP servers that allow it), by
simply keeping the LDAP user and password empty in the LDAP configuration.
This does not allow anonymous authentication for users, it is only for the master
LDAP account that is used to verify if a user exists before attempting to
authenticate it.

Securing the connection with STARTTLS is available for LDAP servers supporting
it, by enabling the TLS option in the LDAP configuration.

For further options configuring the LDAP settings, refer to the ldap.conf
manpage: manpage:`ldap.conf(5)`.

Security Considerations:
------------------------
Users' LDAP passwords are never stored in the OpenERP database, the LDAP server
is queried whenever a user needs to be authenticated. No duplication of the
password occurs, and passwords are managed in one place only.

OpenERP does not manage password changes in the LDAP, so any change of password
should be conducted by other means in the LDAP directory directly (for LDAP users).

It is also possible to have local OpenERP users in the database along with
LDAP-authenticated users (the Administrator account is one obvious example).

Here is how it works:
---------------------
    * The system first attempts to authenticate users against the local OpenERP
      database;
    * if this authentication fails (for example because the user has no local
      password), the system then attempts to authenticate against LDAP;

As LDAP users have blank passwords by default in the local OpenERP database
(which means no access), the first step always fails and the LDAP server is
queried to do the authentication.

Enabling STARTTLS ensures that the authentication query to the LDAP server is
encrypted.

User Template:
--------------
In the LDAP configuration on the Company form, it is possible to select a *User
Template*. If set, this user will be used as template to create the local users
whenever someone authenticates for the first time via LDAP authentication. This
allows pre-setting the default groups and menus of the first-time users.

**Warning:** if you set a password for the user template, this password will be
         assigned as local password for each new LDAP user, effectively setting
         a *master password* for these users (until manually changed). You
         usually do not want this. One easy way to setup a template user is to
         login once with a valid LDAP user, let OpenERP create a blank local
         user with the same login (and a blank password), then rename this new
         user to a username that does not exist in LDAP, and setup its groups
         the way you want.
    

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
company_form_view res.company.form.inherit.users_ldap res.company xpath Inherits base.view_company_form
view_ldap_installer_form ldap.installer.form res.company.ldap form New
Models touched (0)

No models found for this module.