From 4099fc9af0ef9f867497f8c0fc04d4eb1ef8e08c Mon Sep 17 00:00:00 2001 From: Carson Gee <x@carsongee.com> Date: Mon, 24 Feb 2014 13:18:22 -0500 Subject: [PATCH] Correct misaligned django-cas integration --- cms/djangoapps/contentstore/views/public.py | 4 ++++ cms/envs/aws.py | 10 ++++++++++ cms/urls.py | 6 ++++++ common/djangoapps/student/views.py | 3 +++ lms/envs/aws.py | 11 +++++++++++ lms/envs/common.py | 11 ----------- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/cms/djangoapps/contentstore/views/public.py b/cms/djangoapps/contentstore/views/public.py index 63f95084aab..da805a7bd71 100644 --- a/cms/djangoapps/contentstore/views/public.py +++ b/cms/djangoapps/contentstore/views/public.py @@ -44,6 +44,10 @@ def login_page(request): # to course now that the user is authenticated via # the decorator. return redirect('/course') + if settings.FEATURES.get('AUTH_USE_CAS'): + # If CAS is enabled, redirect auth handling to there + return redirect(reverse('cas-login')) + return render_to_response( 'login.html', { diff --git a/cms/envs/aws.py b/cms/envs/aws.py index 3147ad3cd7b..383d6925e00 100644 --- a/cms/envs/aws.py +++ b/cms/envs/aws.py @@ -181,6 +181,16 @@ PLATFORM_NAME = ENV_TOKENS.get('PLATFORM_NAME', 'edX') if "TRACKING_IGNORE_URL_PATTERNS" in ENV_TOKENS: TRACKING_IGNORE_URL_PATTERNS = ENV_TOKENS.get("TRACKING_IGNORE_URL_PATTERNS") +# Django CAS external authentication settings +CAS_EXTRA_LOGIN_PARAMS = ENV_TOKENS.get("CAS_EXTRA_LOGIN_PARAMS", None) +if FEATURES.get('AUTH_USE_CAS'): + CAS_SERVER_URL = ENV_TOKENS.get("CAS_SERVER_URL", None) + AUTHENTICATION_BACKENDS = ( + 'django.contrib.auth.backends.ModelBackend', + 'django_cas.backends.CASBackend', + ) + INSTALLED_APPS += ('django_cas',) + MIDDLEWARE_CLASSES += ('django_cas.middleware.CASMiddleware',) ################ SECURE AUTH ITEMS ############################### # Secret things: passwords, access keys, etc. diff --git a/cms/urls.py b/cms/urls.py index 65d19e83f7a..063995117ef 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -115,6 +115,12 @@ if settings.FEATURES.get('ENABLE_SERVICE_STATUS'): url(r'^status/', include('service_status.urls')), ) +if settings.FEATURES.get('AUTH_USE_CAS'): + urlpatterns += ( + url(r'^cas-auth/login/$', 'external_auth.views.cas_login', name="cas-login"), + url(r'^cas-auth/logout/$', 'django_cas.views.logout', {'next_page': '/'}, name="cas-logout"), + ) + urlpatterns += patterns('', url(r'^admin/', include(admin.site.urls)),) # enable automatic login diff --git a/common/djangoapps/student/views.py b/common/djangoapps/student/views.py index 2c802d3f4fd..eacad70210f 100644 --- a/common/djangoapps/student/views.py +++ b/common/djangoapps/student/views.py @@ -344,6 +344,9 @@ def signin_user(request): # branding and allow that to process the login if it # is enabled and the header is in the request. return redirect(reverse('root')) + if settings.FEATURES.get('AUTH_USE_CAS'): + # If CAS is enabled, redirect auth handling to there + return redirect(reverse('cas-login')) if request.user.is_authenticated(): return redirect(reverse('dashboard')) diff --git a/lms/envs/aws.py b/lms/envs/aws.py index ee424f84cc9..373704b5e26 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -258,6 +258,17 @@ SSL_AUTH_EMAIL_DOMAIN = ENV_TOKENS.get("SSL_AUTH_EMAIL_DOMAIN", "MIT.EDU") SSL_AUTH_DN_FORMAT_STRING = ENV_TOKENS.get("SSL_AUTH_DN_FORMAT_STRING", "/C=US/ST=Massachusetts/O=Massachusetts Institute of Technology/OU=Client CA v1/CN={0}/emailAddress={1}") +# Django CAS external authentication settings +CAS_EXTRA_LOGIN_PARAMS = ENV_TOKENS.get("CAS_EXTRA_LOGIN_PARAMS", None) +if FEATURES.get('AUTH_USE_CAS'): + CAS_SERVER_URL = ENV_TOKENS.get("CAS_SERVER_URL", None) + AUTHENTICATION_BACKENDS = ( + 'django.contrib.auth.backends.ModelBackend', + 'django_cas.backends.CASBackend', + ) + INSTALLED_APPS += ('django_cas',) + MIDDLEWARE_CLASSES += ('django_cas.middleware.CASMiddleware',) + HOSTNAME_MODULESTORE_DEFAULT_MAPPINGS = ENV_TOKENS.get('HOSTNAME_MODULESTORE_DEFAULT_MAPPINGS',{}) ############################## SECURE AUTH ITEMS ############### diff --git a/lms/envs/common.py b/lms/envs/common.py index 623c03098b4..10287904b87 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -1196,17 +1196,6 @@ FEATURES['CLASS_DASHBOARD'] = False if FEATURES.get('CLASS_DASHBOARD'): INSTALLED_APPS += ('class_dashboard',) -######################## CAS authentication ########################### - -if FEATURES.get('AUTH_USE_CAS'): - CAS_SERVER_URL = 'https://provide_your_cas_url_here' - AUTHENTICATION_BACKENDS = ( - 'django.contrib.auth.backends.ModelBackend', - 'django_cas.backends.CASBackend', - ) - INSTALLED_APPS += ('django_cas',) - MIDDLEWARE_CLASSES += ('django_cas.middleware.CASMiddleware',) - ###################### Registration ################################## # For each of the fields, give one of the following values: -- GitLab