From e975989af3d8b23e46589361503128fe7e08a454 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 5 Jan 2015 11:02:47 +0100 Subject: [PATCH] Improve error reporting, prevent tracebacks on normal events --- src/django_kerberos/views.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/django_kerberos/views.py b/src/django_kerberos/views.py index d621cc2..19815ac 100644 --- a/src/django_kerberos/views.py +++ b/src/django_kerberos/views.py @@ -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)