implemented base support for CASv3

This commit is contained in:
Giuseppe Chiesa
2016-11-17 13:30:11 +01:00
parent ad9ebea900
commit 2c70a858f1
+16 -1
View File
@@ -2005,6 +2005,12 @@ class Auth(object):
return self.cas_validate(version=2, proxy=False)
elif args(1) == self.settings.cas_actions['proxyvalidate']:
return self.cas_validate(version=2, proxy=True)
elif (args(1) == 'p3'
and args(2) == self.settings.cas_actions['servicevalidate']):
return self.cas_validate(version=3, proxy=False)
elif (args(1) == 'p3'
and args(2) == self.settings.cas_actions['proxyvalidate']):
return self.cas_validate(version=3, proxy=True)
elif args(1) == self.settings.cas_actions['logout']:
return self.logout(next=request.vars.service or DEFAULT)
else:
@@ -2830,6 +2836,15 @@ class Auth(object):
if success:
if version == 1:
message = 'yes\n%s' % user[userfield]
elif version == 3:
username = user.get('username', user[userfield])
message = build_response(
TAG['cas:authenticationSuccess'](
TAG['cas:user'](username),
TAG['cas:attributes'](
*[TAG['cas:' + field.name](user[field.name])
for field in self.table_user()
if field.readable])))
else: # assume version 2
username = user.get('username', user[userfield])
message = build_response(
@@ -7072,4 +7087,4 @@ class Config(object):
if __name__ == '__main__':
import doctest
doctest.testmod()
doctest.testmod()