在Odoo中通过XMLRPC从PHP系统进行身份验证


Authenticate via XMLRPC in Odoo from a PHP system

我想通过xmlrpc验证到Odoo,但是作为一种SSO实现。用户的凭据在Odoo和PHP中都是相同的,所以当用户登录到Odoo时,基本上会从PHP系统重定向到Odoo。问题是,由于密码在PHP和Odoo端都是散列的,因此没有办法将密码从PHP传递到Odoo。我知道,如果通过了用户名和密码,就可以进行身份验证,但这里的情况并非如此,那么是否有任何方法可以为上述场景实现SSO ?

Thanks And Regards

Yaseen Shareef

Odoo支持除本地密码以外的其他身份验证机制,开箱即用:

  • LDAP认证由内置的auth_ldap模块提供。它需要外部LDAP服务,例如openldap或Microsoft Active Directory。它也适用于XML-RPC级别,因为它是一种基于密码的机制。
  • OAuth2鉴权由内置的auth_oauth模块提供。它需要一个外部OAuth2提供商,比如谷歌或Facebook账户。这在XML-RPC级别上不能透明地工作,因为它不是严格基于密码的。您需要首先对HTTP会话进行OAuth身份验证,然后您可以使用JSON-RPC API来远程访问Odoo,就像使用XML-RPC一样。
  • Odoo 8还通过auth_openid模块内置了对OpenID集成的支持。这需要一个外部OpenID服务,但在Odoo 9中已经弃用,取而代之的是等效的OAuth服务。与OAuth类似,它不是基于密码的,因此它不能直接在XML-RPC级别工作。

Odoo API完全可以通过XML-RPC或JSON-RPC访问,它们是严格等效的。在大多数语言中,每种语言都有相应的RPC库,流行语言通常有专用的Odoo RPC库。

通过使用这些外部身份验证机制之一,您可以轻松地在Odoo和PHP应用程序上实现SSO,因为每种机制都有对应的PHP库。您只需要为您的案例选择一个合适的提供商。

此外,存在用于其他身份验证机制的第三方社区模块(查看此处了解初学者)。例如,在7.0版本中,有一个模块将基于HTTP基本身份验证(auth_from_http_basic)在Odoo中进行身份验证,允许基于web服务器可插拔身份验证的单点登录。我不认为它被移植到版本8,但你可以联系作者并帮助完成它。