通过http远程用户进行身份验证
odoo8-addon-auth-from-http-remote-user的Python项目详细描述
此模块通过在中查找字段http_remote_user来初始化会话 http请求的头,并尝试将给定值绑定到用户。 要激活此模块,必须将其安装在预期的数据库中并加载 在启动时,将–load参数添加到启动命令:
--load=web,web_kanban,auth_from_http_remote_user, ...
如果在标题中找到该字段,并且没有用户与给定的用户匹配,则 系统发出登录错误页(401未经授权的)
用例
该模块允许与可以通过 通过远程用户http头字段对用户进行身份验证。在许多 这是通过apache httpd或nginx代理odoo等服务器实现的。
重要
当用apache或nginx代理odoo服务器时,它是 在 请求由代理处理以避免安全问题在阿帕奇你 可以在virtualhost中使用requestheader指令 剖面图
<VirtualHost *:80> ServerName MY_VHOST.com ProxyRequests Off ... RequestHeader unset Remote-User early ProxyPass / http://127.0.0.1:8069/ retry=10 ProxyPassReverse / http://127.0.0.1:8069/ ProxyPreserveHost On </VirtualHost>
如何使用apache[2]
测试模块apache可以用作反向代理,提供身份验证和添加 http头中的必需字段。
安装apache:
$ sudo apt-get install apache2
通过将新文件放入 /提供etc/apache2/站点:
$ sudo vi /etc/apache2/sites-available/MY_VHOST.com
内容如下:
<VirtualHost *:80> ServerName MY_VHOST.com ProxyRequests Off <Location /> AuthType Basic AuthName "Test Odoo auth_from_http_remote_user" AuthBasicProvider file AuthUserFile /etc/apache2/MY_VHOST.htpasswd Require valid-user RewriteEngine On RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule . - [E=RU:%1] RequestHeader set Remote-User "%{RU}e" env=RU </Location> RequestHeader unset Remote-User early ProxyPass / http://127.0.0.1:8069/ retry=10 ProxyPassReverse / http://127.0.0.1:8069/ ProxyPreserveHost On </VirtualHost>
重要
requestheader指令用于添加remote user http头中的字段默认情况下,'Http-'前缀被添加到 字段名。 在odoo中,header的字段名是规范化的。因此 规范化,“http远程用户”可用作“http远程用户”。 如果你不知道你的指定字段是如何被奥多看到的,运行 激活模块并查找条目后,服务器处于调试模式 例如:
DEBUG openerp1 openerp.addons.auth_from_http_remote_user.controllers. session: Field 'HTTP_MY_REMOTE_USER' not found in http headers {'HTTP_AUTHORIZATION': 'Basic YWRtaW46YWRtaW4=', ..., 'HTTP_REMOTE_USER': 'demo')
启用所需的apache模块:
$ sudo a2enmod headers $ sudo a2enmod proxy $ sudo a2enmod rewrite $ sudo a2enmod proxy_http
启用新的vhost:
$ sudo a2ensite MY_VHOST.com
创建配置的基本身份验证所使用的htpassword文件:
$ sudo htpasswd -cb /etc/apache2/MY_VHOST.htpasswd admin admin $ sudo htpasswd -b /etc/apache2/MY_VHOST.htpasswd demo demo
对于本地测试,在/etc/vhosts文件中添加MY_VHOST.com
最后重新加载配置:
$ sudo service apache2 reload
打开浏览器并转到MY_VHOST.com如果一切都配置好了, 在odoo外提示输入登录名和密码,并自动 已登录系统
[1] | Shibolleth, Tivoli access manager, .. |
[2] | Based on a ubuntu 12.04 env |
贡献者
- 洛朗·米格农