I am running a single Django application with Single Sign-On mod_auth_sspi enabled using mod_wsgi.
Apache / 2.2.21 (Win32) mod_wsgi / 3.3 Python / 2.7.2 mod_auth_sspi / 1.0.4
The problem is that I cannot add a second Django application that uses the same modules because I want to use Single Sign-On. If I add a second application, Apache authenticates only the first requested application. The second causes Error 500 - Internal server error. If I restart Apache and try to run the second application first, it will work. But then when I request the first application, it throws error 500 (the same error as the first).
error.log:
mod_wsgi (pid=4724): Exception occurred processing WSGI script 'C:/www/app2/app2.wsgi'. [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] Traceback (most recent call last): [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\wsgi.py", line 272, in __call__ [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] response = self.get_response(request) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\base.py", line 169, in get_response [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\handlers\\base.py", line 203, in handle_uncaught_exception [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return debug.technical_500_response(request, *exc_info) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\views\\debug.py", line 59, in technical_500_response [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] html = reporter.get_traceback_html() [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\views\\debug.py", line 151, in get_traceback_html [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return t.render(c) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\template\\base.py", line 123, in render [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return self._render(context) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\template\\base.py", line 117, in _render [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return self.nodelist.render(context) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\template\\base.py", line 744, in render [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] bits.append(self.render_node(node, context)) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\template\\debug.py", line 73, in render_node [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] result = node.render(context) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\template\\debug.py", line 90, in render [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] output = self.filter_expression.resolve(context) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\template\\base.py", line 536, in resolve [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] new_obj = func(obj, *arg_vals) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\template\\defaultfilters.py", line 695, in date [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return format(value, arg) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\dateformat.py", line 285, in format [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return df.format(format_string) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\dateformat.py", line 30, in format [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] pieces.append(force_unicode(getattr(self, piece)())) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\dateformat.py", line 191, in r [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return self.format('D, j MYH:i:s O') [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\dateformat.py", line 30, in format [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] pieces.append(force_unicode(getattr(self, piece)())) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\encoding.py", line 71, in force_unicode [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] s = unicode(s) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\functional.py", line 206, in __unicode_cast [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return self.__func(*self.__args, **self.__kw) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\translation\\__init__.py", line 81, in ugettext [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return _trans.ugettext(message) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\translation\\trans_real.py", line 286, in ugettext [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] return do_translate(message, 'ugettext') [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\translation\\trans_real.py", line 276, in do_translate [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] _default = translation(settings.LANGUAGE_CODE) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\translation\\trans_real.py", line 185, in translation [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] default_translation = _fetch(settings.LANGUAGE_CODE) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\translation\\trans_real.py", line 162, in _fetch [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] app = import_module(appname) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\utils\\importlib.py", line 35, in import_module [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] __import__(name) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\contrib\\admin\\__init__.py", line 3, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\contrib\\admin\\helpers.py", line 3, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] from django.contrib.admin.util import (flatten_fieldsets, lookup_field, [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\contrib\\admin\\util.py", line 1, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] from django.db import models [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\db\\models\\__init__.py", line 12, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] from django.db.models.fields.files import FileField, ImageField [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\db\\models\\fields\\files.py", line 9, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] from django.core.files.storage import default_storage [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\files\\storage.py", line 9, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] from django.core.files import locks, File [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\django-1.3.1-py2.7.egg\\django\\core\\files\\locks.py", line 25, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] import pywintypes [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\win32\\lib\\pywintypes.py", line 124, in <module> [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] __import_pywin32_system_module__("pywintypes", globals()) [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] File "C:\\Python\\lib\\site-packages\\win32\\lib\\pywintypes.py", line 114, in __import_pywin32_system_module__ [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] assert sys.modules[modname] is old_mod [Tue Feb 28 09:57:48 2012] [error] [client 192.168.1.121] TemplateSyntaxError: Caught AssertionError while rendering:
conf / wsgi.conf:
WSGIScriptAlias /app1 "C:/www/app1/app1.wsgi" <Directory "C:/www/app1"> Allow from all # AllowOverride AuthConfig </Directory> <Location /app1> AuthName "server" AuthType SSPI SSPIAuth On SSPIAuthoritative On SSPIUsernameCase lower # SSPIDomain DOMAIN require valid-user </Location> WSGIScriptAlias /app2 "C:/www/app2/app2.wsgi" <Directory "C:/www/app2"> Allow from all # AllowOverride AuthConfig </Directory> <Location /app2> AuthName "server" AuthType SSPI SSPIAuth On SSPIAuthoritative On SSPIUsernameCase lower # SSPIDomain DOMAIN require valid-user </Location> Alias /static/ "c:/static-root/" <Directory "c:/static-root/"> Order Allow,Deny Allow from all </Directory>
c: /www/app2/app2.wsgi (app1.wsgi seems to be):
import os import sys path = 'c:/www/' apps_path = 'c:/www/app2/' if path not in sys.path: sys.path.append(path) if apps_path not in sys.path: sys.path.append(apps_path) os.environ['DJANGO_SETTINGS_MODULE'] = 'app2.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
Do you know what to do to make both applications work with Single Sign-On? I do not know if this is a Django error, mod_wsgi error or mod_auth_sspi error. Can you help me please?
EDIT: It appears to be independent of the mod_auth_sspi module.