通过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

贡献者

  • 洛朗·米格农

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何创建带有图标的按钮?   java我想实现定制的Android应用程序物理键盘键,我需要修改qwerty吗。kl文件或如何添加新的键盘映射?   java Toast并没有显示在Android应用程序中,但它首先被显示,然后在两天后停止   java如何检查URLConnection是否已处于连接状态?   java无法访问其他类中的方法(Android Studio)   java无法获取访问字符串中字符的方法   使用jdax/dex2jar反编译后的java类   java如何使用Junit获取数据块报告   如何在java/j2ee中以编程方式为新闻网站生成RSS?   java如何使用已声明的事实类型动态重新加载规则?   java单例模式使用   javaq:Mockito使用@Mock和@Autowired   java在Raspberry Pi上将RXTX集成到OSGi包时未解决的需求