Improve error reporting, prevent tracebacks on normal events

This commit is contained in:
Benjamin Dauvergne 2015-01-05 11:02:47 +01:00
parent fc7c1855f7
commit e975989af3
1 changed files with 14 additions and 1 deletions

View File

@ -1,3 +1,5 @@
import logging
import kerberos
from django import http
@ -15,6 +17,10 @@ class NegotiateView(View):
unauthorized_template_name = 'django_kerberos/unauthorized.html'
error_template_name = 'django_kerberos/error.html'
def __init__(self, *args, **kwargs):
self.logger = logging.getLogger(__name__)
super(NegotiateView, self).__init__(*args, **kwargs)
def challenge(self, request, *args, **kwargs):
'''Send negotiate challenge'''
response = TemplateResponse(request, self.unauthorized_template_name,
@ -54,8 +60,15 @@ class NegotiateView(View):
kind, authstr = request.META['HTTP_AUTHORIZATION'].split(' ', 1)
if kind == 'Negotiate':
service = 'HTTP@%s' % self.host(request)
result, context = kerberos.authGSSServerInit(service)
try:
result, context = kerberos.authGSSServerInit(service)
except kerberos.KrbError, e:
self.logger.warning('exception during authGSSServerInit: %s', e)
return TemplateResponse(request, self.error.template_name,
status=500)
if result != 1:
self.logger.warning('authGSSServerInit result is non-zero: %s', result)
return TemplateResponse(request, self.error.template_name,
status=500)
r = kerberos.authGSSServerStep(context, authstr)