我想通过xmlrpc对Odoo进行身份验证,但是作为SSO类型的实现。用户的凭证在Odoo和PHP中都是相同的,所以当用户登录时,基本上会从php系统重定向到Odoo。问题是因为密码在PHP和Odoo端都被散列,所以没有办法将密码从php传递给odoo。我知道如果传递用户名和密码就可以进行身份验证,但这不是这种情况,那么有没有办法为上述场景实现SSO?
谢谢和问候,
Yaseen Shareef
答案 0 :(得分:0)
Odoo支持其他身份验证机制,而不是本地密码,开箱即用:
auth_ldap
模块提供。它需要外部LDAP服务,例如openldap或Microsoft Active Directory。它也适用于XML-RPC级别,因为它是基于密码的机制。auth_oauth
模块提供。它需要外部OAuth2提供程序,例如Google或Facebook帐户。这在XML-RPC级别上不能透明地工作,因为它不是严格基于密码的。您需要首先对HTTP会话进行OAuth身份验证,然后您可以使用JSON-RPC API远程访问Odoo,就像使用XML-RPC一样。auth_openid
模块包含对OpenID集成的内置支持。这需要外部OpenID服务,但从Odoo 9开始就已弃用,而使用的是等效的OAuth服务。与OAuth类似,它不是基于密码的,因此它不能直接在XML-RPC级别上运行。Odoo API可以通过XML-RPC或JSON-RPC完全访问,这些是完全相同的。大多数语言都有RPC库,流行语言通常有专门的Odoo RPC库。
您可以使用其中一种外部身份验证机制轻松地在Odoo和您的PHP应用程序上实现SSO,因为每个都有PHP库。您只需为您的案例选择合适的提供商。
此外,还存在其他身份验证机制的第三方社区模块(对于初学者来说看here)。例如,对于版本7.0,有一个模块将基于HTTP基本身份验证(auth_from_http_basic
)在Odoo中进行身份验证,允许基于Web服务器的SSO'可插拔的身份验证。我不认为它已被移植到版本8,但您可以联系作者并帮助完成它。