Added CAS Auth middleware and CAS Login urls to remie platform + removed authserver/homestead/.vagrant from repo
authordurandn
Tue, 02 Jun 2015 10:41:10 +0200
changeset 9 3166a35f5f0d
parent 8 5a0cbbe0922a
child 10 7e83c61b1f87
Added CAS Auth middleware and CAS Login urls to remie platform + removed authserver/homestead/.vagrant from repo
.hgignore
authserver/homestead/.vagrant/machines/default/virtualbox/action_provision
authserver/homestead/.vagrant/machines/default/virtualbox/action_set_name
authserver/homestead/.vagrant/machines/default/virtualbox/id
authserver/homestead/.vagrant/machines/default/virtualbox/index_uuid
authserver/homestead/.vagrant/machines/default/virtualbox/private_key
authserver/homestead/.vagrant/machines/default/virtualbox/synced_folders
authserver/testCAS/app/Http/Controllers/HomeController.php
server/src/remie/middleware/__init__.py
server/src/remie/middleware/cas_proxy_auth.py
server/src/remieplt/settings/__init__.py
server/src/remieplt/urls.py
--- a/.hgignore	Wed May 27 15:34:06 2015 +0200
+++ b/.hgignore	Tue Jun 02 10:41:10 2015 +0200
@@ -39,3 +39,6 @@
 server/web/*
 server/src/dist
 server/src/MANIFEST.in
+
+syntax: regexp
+^authserver/homestead/\.vagrant$
\ No newline at end of file
--- a/authserver/homestead/.vagrant/machines/default/virtualbox/action_provision	Wed May 27 15:34:06 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-1.5:859c39e6-35df-4962-82f3-dd9ee4fc2372
\ No newline at end of file
--- a/authserver/homestead/.vagrant/machines/default/virtualbox/action_set_name	Wed May 27 15:34:06 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-1433757191
--- a/authserver/homestead/.vagrant/machines/default/virtualbox/id	Wed May 27 15:34:06 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-859c39e6-35df-4962-82f3-dd9ee4fc2372
\ No newline at end of file
--- a/authserver/homestead/.vagrant/machines/default/virtualbox/index_uuid	Wed May 27 15:34:06 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-b18023f8440641c693695a091f87e673
\ No newline at end of file
--- a/authserver/homestead/.vagrant/machines/default/virtualbox/private_key	Wed May 27 15:34:06 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAt6e7vjPOZRl8bOBsFUCPqvHfqIv4ZhN9fYLwo6OwdRcbCJIM
-vdT1HtsV9A8doyVLz2rohuBzZ4j1ZE2OxXqR4oPvxoJppZEPRaD12vsKH5HMF5D3
-58TFh4ttUfHeMGiO4PMUYFiCmwg9luoAQ9+wsMO54kQBYND1QJOsbkabSOZFpZyJ
-GKsm3EKWs2+rNIA+akSxxbjEi4PpPu1cIpJSXoecD5gvCBbapkTP5ryeR7/kJyCF
-5gDmEyc2G3v+sT2KpglIyZgvch5gly0FXcM1hWYfxThOsV15/0SehuAH78Qj5b1Q
-mtRyfaIzTxp6DbjmFX+Lt0oKdviUShUmKycgGQIDAQABAoIBAHt/eYovgC0P9FGq
-oEOyRGnpeEL4zLKnjI1oDbWcjz5NqUocHCFTIPn8zUhvGbjpjY8PDwoTyMbonEs0
-tDsrbwppOkW80Jobb6+cy3bTtT0BZ8K5I1thQIsjQQIHqSfYR6wRCbS4ECt8YR4o
-gMEjnMdg9pCmtl6KZUFljGAjbqyXt3Mezgld4ytJ9bl6ZuZHe+BTWOTpx7SCsw2n
-njLbHyuf2JotE4iz72nPAz8TJye8zY1zG8VCqnglyHt5kOnqXPivmBbP4drqWPSi
-s3QGD6PS2wNk9CFDfkf8S1n9IwKMvJMmKMIwrj8zPHnuPdxGnUvj1bVXVXsW7m/2
-bx5ClVkCgYEA7ms+Or5OFG2QjVIkCEf7JyHHOjBqLI0v5Pu/3rVAGlHDvA+y3+rX
-bUmguDd+toVv2B8u+0xxtVgFg2taqW/wKFn8vcXo5h85p7pEPMXMuRHY0S51EmTI
-/aHUl+iGiRg4QP3wAuArmE/Rs4F6m/FDg/Wg44mSibxPqmyAlfnvcjsCgYEAxTKv
-/wxfiClCrGHXPBQWkbOuYgfSDt2t+feHn1BKwpa4uHPDQjs2nsM5ciQOqmlU4lg4
-H+Mw4MKoluzzFHoPUOwX+HPVEFtQsw9VOW8SGpJHRQCx1bBSXAYaRzNhhINpRSiX
-Mx9GEBkmNMqZg4v5zm9gPsBILPBDJ7+xrtkKHbsCgYBNAQg9Ut/HC0gnzMLkhdMh
-ZXCCY8a3EvbIH2NuG95TYds1L2DXn3Lq0l/9f7cGXnysMg4rjhoftwk41ACZPxUz
-AzV1WamKQcWOXcPSWRRxJcmAbl/TjAe6m30dfzWMq+znWN0fIKYT8JvLPWOLYFYt
-FbVcKD/TCqY0Zgz1456ppwKBgGarKjiG76ILoVvwoMf1yX5YZ31AhxwYTIEtX94R
-RqsjH89g7hMokxp7mAgWP9B3gKtLtQTdG1CZ6H6TpUdO+XRvR1eirxaSBGUFoaCC
-dJGDAToqz2vrHiYtQzc4yBfe90r7hCUoriipf1vS87Qqh4f0Ms7Y+3ryKHSkeFUJ
-SRwLAoGBAI/2WCyXz6vq7HpkBvn2r70XtDiOuVSJM8yX+mGGuY9EMkQffD0ZvrI0
-y/Qy5c8aqPkedTJGtdeoRLXQbML7ieQ1TH6ssWJT5ds8WXg2nff1CAT4G1kC238q
-Dbc7vU7JeMV61G76Kcu9gi3L9ZgCU/etDzPqYj8fbvfzGWPWj6qB
------END RSA PRIVATE KEY-----
--- a/authserver/homestead/.vagrant/machines/default/virtualbox/synced_folders	Wed May 27 15:34:06 2015 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-{"virtualbox":{"/home/vagrant/Code":{"type":null,"mount_options":[],"guestpath":"/home/vagrant/Code","hostpath":"/Users/durandn/IRIProjects/remie/authserver/testCAS","disabled":false},"/vagrant":{"guestpath":"/vagrant","hostpath":"/Users/durandn/IRIProjects/remie/authserver/homestead","disabled":false}}}
\ No newline at end of file
--- a/authserver/testCAS/app/Http/Controllers/HomeController.php	Wed May 27 15:34:06 2015 +0200
+++ b/authserver/testCAS/app/Http/Controllers/HomeController.php	Tue Jun 02 10:41:10 2015 +0200
@@ -40,7 +40,7 @@
         $proxiedRequestResponse=curl_exec($ch);
         curl_close($ch);
 
-        $loginUrl=env("LDT_URL")."/accounts/caslogin";
+        $loginUrl=env("LDT_URL")."/accounts/cas/login";
 
         return view('home')->with(
           array("pt" => $pt, "err_code" => $err_code, "err_msg" => $err_msg, "proxiedRequestResponse" => $proxiedRequestResponse, 'loginUrl' => $loginUrl)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/server/src/remie/middleware/cas_proxy_auth.py	Tue Jun 02 10:41:10 2015 +0200
@@ -0,0 +1,37 @@
+from urllib import urlencode
+from urlparse import urlparse, urlunparse, parse_qsl
+
+from django.contrib.auth import authenticate, login
+
+from ldt.security import set_current_user
+
+
+class CASAuthenticationMiddleware(object):
+    '''
+        Middleware class for authenticating a user through a CAS Server via the CAS Proxy protocol.
+        The request must have a "cas_ticket" argument that contains the CAS Proxy ticket to be validated.
+        
+        Requires django-cas-ng authentication backend.
+    '''
+    def process_request(self, request):
+        ticket = request.GET.get("casticket")
+        if ticket is not None:
+            parsed_url = urlparse(request.build_absolute_uri())
+            # editing ticket parameter out of the request
+            new_query_params = urlencode([param for param in parse_qsl(parsed_url.query) if str(param[0]) != "casticket"])
+            
+            service = urlunparse((
+                parsed_url.scheme,
+                parsed_url.netloc,
+                parsed_url.path,
+                parsed_url.params,
+                new_query_params,
+                parsed_url.fragment
+            ))
+            
+            user = authenticate(ticket=ticket, service=service, request=request)
+            if user is None:
+                return False
+            request.user = user
+            login(request, user)
+            set_current_user(user)
\ No newline at end of file
--- a/server/src/remieplt/settings/__init__.py	Wed May 27 15:34:06 2015 +0200
+++ b/server/src/remieplt/settings/__init__.py	Tue Jun 02 10:41:10 2015 +0200
@@ -77,6 +77,7 @@
     'ldt.ldt_utils.middleware.swfupload.SWFUploadMiddleware',
     'ldt.ldt_utils.middleware.userprofile.LanguageMiddleware',
     'ldt.security.middleware.SecurityMiddleware',
+    'remie.middleware.cas_proxy_auth.CASAuthenticationMiddleware'
 )
 
 ROOT_URLCONF = 'remieplt.urls'
@@ -154,6 +155,7 @@
 #    'social.backends.facebook.FacebookOAuth2',
     'guardian.backends.ObjectPermissionBackend',
     'django.contrib.auth.backends.ModelBackend',
+    'django_cas_ng.backends.CASBackend',
 )
 
 
--- a/server/src/remieplt/urls.py	Wed May 27 15:34:06 2015 +0200
+++ b/server/src/remieplt/urls.py	Tue Jun 02 10:41:10 2015 +0200
@@ -23,6 +23,7 @@
 from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 from django.views.generic import RedirectView
 
+from remie.views import RemieBaseView
 
 js_info_dict = {
     'packages': ('django.contrib.admin',),
@@ -41,8 +42,11 @@
 
     url(r'^accounts/', include('social.apps.django_app.urls', namespace='social')),
     url(r'^accounts/login/$',pf_login,{'template_name': 'registration/login.html'},name='auth_login'),
+    url(r'^accounts/cas/login/$', 'django_cas_ng.views.login'),
+    url(r'^accounts/cas/logout/$', 'django_cas_ng.views.logout'),
     url(r'^oauth/', include('oauth_provider.urls')),
-
+    
+    url(r'^remie/$', RemieBaseView.as_view(), name="remie_base"),
 
     url(r'^/?$', RedirectView.as_view(url='ldt')),