From fd7f90367ecdb998ac90139db7240990422f0256 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Tue, 14 Jan 2014 14:24:48 +0100 Subject: [PATCH] [ADD] auth_from_http_basic --- auth_from_http_basic/__init__.py | 40 ++++++++++++++ auth_from_http_basic/__openerp__.py | 52 +++++++++++++++++++ auth_from_http_basic/static/src/img/icon.png | Bin 0 -> 1142 bytes 3 files changed, 92 insertions(+) create mode 100644 auth_from_http_basic/__init__.py create mode 100644 auth_from_http_basic/__openerp__.py create mode 100644 auth_from_http_basic/static/src/img/icon.png diff --git a/auth_from_http_basic/__init__.py b/auth_from_http_basic/__init__.py new file mode 100644 index 000000000..26fa1ad00 --- /dev/null +++ b/auth_from_http_basic/__init__.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp.addons.web.http import WebRequest +from openerp.addons.web.controllers.main import db_list + +old_init = WebRequest.init + +def init(self, params): + old_init(self, params) + if self.httprequest.authorization and not self.session._login: + dbs = db_list(self) + self.session.authenticate( + dbs and dbs[0], + self.httprequest.authorization.username, + self.httprequest.authorization.password, + dict( + base_location=self.httprequest.url_root.rstrip('/'), + HTTP_HOST=self.httprequest.environ['HTTP_HOST'], + REMOTE_ADDR=self.httprequest.environ['REMOTE_ADDR'] + )) + +WebRequest.init = init diff --git a/auth_from_http_basic/__openerp__.py b/auth_from_http_basic/__openerp__.py new file mode 100644 index 000000000..461dd3385 --- /dev/null +++ b/auth_from_http_basic/__openerp__.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This module copyright (C) 2014 Therp BV (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + "name" : "Authenticate via HTTP basic authentication", + "version" : "1.0", + "author" : "Therp BV", + "complexity": "expert", + "description": """ +In an environment where several web applications authenticate against the same +source, the simplest way to attain single sign on would be to have the +webserver handle authentication and pass the login information via HTTP headers +to the application it proxies. + +This addon allows for this setup. Technically, it picks up the HTTP +Authorization header, extract a username and a password from that and tries to +login into the first database found in the database list. + """, + "category" : "", + "depends" : [ + ], + "data" : [ + ], + "js": [ + ], + "css": [ + ], + "qweb": [ + ], + "auto_install": False, + "installable": True, + "external_dependencies" : { + 'python' : [], + }, +} diff --git a/auth_from_http_basic/static/src/img/icon.png b/auth_from_http_basic/static/src/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7ab302908e114888446d84d3493fa726033c1f GIT binary patch literal 1142 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpuXS$ zpAc7|0+Vy!%`Sd3J@*~Rz=H@Xz@vBMNCCrhU++~OAXQKjgnPb5^?zLm6yRy4l)f7mx|d; zx?*(k%?4)UEmyi0Ecrc2=k&YFn|8nX@qd4)(saLN%zo##oL4V9SpH%8W(I{5_Kby- zneS~VhopAyb6lBS&$U5E`gKppbdV7NQIC+SE zKe2ts8LoR*Hw$jqcIEDHSU_mi4;HoUDLTgOJMIHx zO|`@|q9i4;B-JXpC>2OC7#SEE>l#?<8d`)H8e5qfSQ#5>8yHy`7