diff --git a/.gitignore b/.gitignore index ef4c0a0..81ef8b7 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ eggs/ parts/ src/ var/ +.idea +.gitignore diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.rst b/README.rst index f7542ef..0719faf 100644 --- a/README.rst +++ b/README.rst @@ -8,6 +8,7 @@ against a CAS (Central Autentication Server). It currently supports CAS 2.0 and CAS 3.0 protocols. +(pe82/ftw.casauth) Was debugged for and tested with Plone 5 and CAS 3.3. Installation ============ diff --git a/ftw/casauth/cas.py b/ftw/casauth/cas.py index 9c61fcb..91d46c4 100644 --- a/ftw/casauth/cas.py +++ b/ftw/casauth/cas.py @@ -2,7 +2,7 @@ import urllib import urllib2 from logging import getLogger -from xml.dom.minidom import parseString +from xml.dom.minidom import parseString, parse from xml.parsers.expat import ExpatError if USE_CUSTOM_HTTPS_HANDLER: @@ -10,8 +10,6 @@ else: from urllib2 import HTTPSHandler -CAS_NS = "http://www.yale.edu/tp/cas" - logger = getLogger('ftw.casauth') @@ -24,7 +22,9 @@ def validate_ticket(ticket, cas_server_url, service_url): ticket, ) + logger.info("Validate URL: " + validate_url) opener = urllib2.build_opener(HTTPSHandler) + try: resp = opener.open(validate_url) except urllib2.HTTPError as e: @@ -44,14 +44,15 @@ def validate_ticket(ticket, cas_server_url, service_url): resp_data = resp.read() try: doc = parseString(resp_data) - except ExpatError: + except ExpatError as exp: + logger.info("ExpatError: %s" % exp.message) return False - auth_success = doc.getElementsByTagNameNS(CAS_NS, - 'authenticationSuccess') + auth_success = doc.getElementsByTagName('cas:authenticationSuccess') + if not auth_success: - auth_fail = doc.getElementsByTagNameNS(CAS_NS, - 'authenticationFailure') + auth_fail = doc.getElementsByTagName('cas:authenticationFailure') if auth_fail: + logger.info('auth_fail is true, doc = {}'.format(doc.toprettyxml())) logger.info( "Authentication failed: Service ticket validation returned" " '%s'." % auth_fail[0].getAttribute('code')) @@ -60,9 +61,11 @@ def validate_ticket(ticket, cas_server_url, service_url): " ticket.") return False - userid = auth_success[0].getElementsByTagNameNS(CAS_NS, 'user') + userid = auth_success[0].getElementsByTagName('cas:user') if not userid: return False userid = userid[0].firstChild.data + logger.info("Validated User ID: %s" % userid) + return userid diff --git a/ftw/casauth/plugin.py b/ftw/casauth/plugin.py index 8a383ec..e01d64f 100644 --- a/ftw/casauth/plugin.py +++ b/ftw/casauth/plugin.py @@ -128,5 +128,6 @@ def manage_updateConfig(self, REQUEST): def _service_url(self, request): url = request['ACTUAL_URL'] if request['QUERY_STRING']: - url = '%s?%s' % (url, request['QUERY_STRING']) + #url = '%s?%s' % (url, request['QUERY_STRING']) + pass return url diff --git a/setup.py b/setup.py index 9532d12..f6069c9 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ import os import sys -version = '1.0.1.dev0' +version = '1.1.5' tests_require = [ 'plone.app.testing',