diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/examples/logout.py | 75 | ||||
| -rw-r--r-- | python/lasso.py | 53 |
2 files changed, 80 insertions, 48 deletions
diff --git a/python/examples/logout.py b/python/examples/logout.py index 84c0ce73..ec3ed914 100644 --- a/python/examples/logout.py +++ b/python/examples/logout.py @@ -6,48 +6,39 @@ import lasso lasso.init() -print -print 'Build LogoutRequest ...' -req = lasso.LogoutRequest.new("http://providerid.com", "CDSC7SCD6SSDJCSCKSDKCDSCLSD", "http://qualifier.com", "federated") -soap = req.soap_envelop() -req2 = lasso.LogoutRequest.new_from_soap(soap) - -print -print 'Rebuild LogoutRequest from soap message ...' -req2.dump() -query = req2.url_encode(1, 'rsakey.pem') -print 'query : ', query - -print -print 'Rebuild LogoutRequest from query ...' -req3 = lasso.LogoutRequest.new_from_query(query) -req3.dump() - -print -print 'Build the LogoutResponse from the request soap ...' -res = lasso.LogoutResponse.new_from_request_soap(soap, "http://providerid.com", "success") -soap = res.dump() - -print -print 'Build LogoutResponse from soap response dump' -res2 = lasso.LogoutResponse.new_from_soap(soap) -print res2.dump() - -print -print 'Build LogoutResponse from response dump' -dump = res.dump() -res3 = lasso.LogoutResponse.new_from_dump(dump) - -print -print 'Build LogoutResponse from request query' -res4 = lasso.LogoutResponse.new_from_request_query(query, "http://providerid.com", "success") -res4.dump() - -print -print 'Rebuild LogoutResponse from response query' -query = res4.url_encode(1, 'rsakey.pem') -res5 = lasso.LogoutResponse.new_from_query(query) -print res5.dump() +spserver = lasso.Server.new("../../examples/sp.xml", + "../../examples/rsapub.pem", "../../examples/rsakey.pem", "../../examples/rsacert.pem", + lasso.signatureMethodRsaSha1) +spserver.add_provider("../../examples/idp.xml", None, None) + +spuser_dump = "<LassoUser><LassoIdentities><LassoIdentity RemoteProviderID=\"https://identity-provider:2003/liberty-alliance/metadata\"><LassoLocalNameIdentifier><NameIdentifier NameQualifier=\"qualifier.com\" Format=\"federated\">LLLLLLLLLLLLLLLLLLLLLLLLL</NameIdentifier></LassoLocalNameIdentifier></LassoIdentity></LassoIdentities></LassoUser>" + +spuser = lasso.User.new_from_dump(spuser_dump) + +# LogoutRequest : +splogout = lasso.Logout.new(spserver, spuser, lasso.providerTypeSp) +splogout.init_request("https://identity-provider:2003/liberty-alliance/metadata") +splogout.build_request_msg() + +request_msg = splogout.msg_body +print 'request url : ', splogout.msg_url +print 'request body : ', splogout.msg_body + + +# LogoutResponse : +idpserver = lasso.Server.new("../../examples/idp.xml", + "../../examples/rsapub.pem", "../../examples/rsakey.pem", "../../examples/rsacert.pem", + lasso.signatureMethodRsaSha1) +idpserver.add_provider("../../examples/sp.xml", None, None) + +idpuser_dump = "<LassoUser><LassoAssertions></LassoAssertions><LassoIdentities></LassoIdentities></LassoUser>" +idpuser = lasso.User.new_from_dump(idpuser_dump) + +idplogout = lasso.Logout.new(idpserver, idpuser, lasso.providerTypeIdp) +idplogout.process_request_msg(request_msg, lasso.httpMethodSoap) +idplogout.build_response_msg() +print 'url : ', idplogout.msg_url +print 'body : ', idplogout.msg_body lasso.shutdown() diff --git a/python/lasso.py b/python/lasso.py index 599a9611..5a30fe06 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -835,6 +835,31 @@ class Server: def destroy(self): lassomod.server_destroy(self) +class User: + """ + """ + + def __init__(self, _obj): + """ + """ + self._o = _obj + + def new(cls): + obj = lassmod.user_new() + return User(obj) + new = classmethod(new) + + def new_from_dump(cls, dump): + obj = lassomod.user_new_from_dump(dump) + return User(obj) + new_from_dump = classmethod(new_from_dump) + + def dump(self): + return lassomod.user_dump(self) + + def destroy(self): + lassomod.server_destroy(self) + loginProtocolProfileBrwsArt = 1 loginProtocolProfileBrwsPost = 2 @@ -924,20 +949,36 @@ class Login: return lassomod.login_must_authenticate(self) +providerTypeSp = 1 +providerTypeIdp = 2 + class Logout: """\brief Short desc Long desc """ + def __isprivate(self, name): + return name == '_o' + + def __getattr__(self, name): + if self.__isprivate(name): + return self.__dict__[name] + if name[:2] == "__" and name[-2:] == "__" and name != "__members__": + raise AttributeError, name + ret = lassomod.login_getattr(self, name) + if ret is None: + raise AttributeError, name + return ret + def __init__(self, _obj): """ The constructor """ self._o = _obj - def new(cls, server, user=None): - obj = lassomod.logout_new(server, user) + def new(cls, server, user, provider_type): + obj = lassomod.logout_new(server, user, provider_type) return Logout(obj) new = classmethod(new) @@ -950,8 +991,8 @@ class Logout: def init_request(self, remote_providerID): return lassomod.logout_init_request(self, remote_providerID); - def process_request(self, request_msg, request_method): - return lassomod.logout_process_request(self, request_msg, request_method); + def process_request_msg(self, request_msg, request_method): + return lassomod.logout_process_request_msg(self, request_msg, request_method); - def process_response(self, response_msg, response_method): - return lassomod.logout_process_response(self, response_msg, response_method); + def process_response_msg(self, response_msg, response_method): + return lassomod.logout_process_response_msg(self, response_msg, response_method); |
