From 49964c80c2e81ebf6cea915046b7690318cd2e0e Mon Sep 17 00:00:00 2001 From: Nicolas Clapies Date: Tue, 27 Jul 2004 15:57:45 +0000 Subject: update of federation termination --- python/environs/py_federation_termination.c | 49 ++++++++++++++++++--------- python/environs/py_federation_termination.h | 6 ++-- python/examples/defederation.py | 51 +++++++++++++++-------------- python/lasso.py | 28 ++++++++-------- python/lassomod.c | 3 +- 5 files changed, 79 insertions(+), 58 deletions(-) (limited to 'python') diff --git a/python/environs/py_federation_termination.c b/python/environs/py_federation_termination.c index d5716fba..4187be8f 100644 --- a/python/environs/py_federation_termination.c +++ b/python/environs/py_federation_termination.c @@ -56,8 +56,9 @@ PyObject *federation_termination_getattr(PyObject *self, PyObject *args) { federation_termination = LassoFederationTermination_get(federation_termination_obj); if (!strcmp(attr, "__members__")) - return Py_BuildValue("[ssss]", "user", "msg_url", "msg_body", - "msg_relayState"); + return Py_BuildValue("[sssss]", "user", "msg_url", "msg_body", + "msg_relayState", + "nameIdentifier"); if (!strcmp(attr, "user")) return (LassoUser_wrap(LASSO_PROFILE_CONTEXT(federation_termination)->user)); @@ -67,26 +68,26 @@ PyObject *federation_termination_getattr(PyObject *self, PyObject *args) { return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(federation_termination)->msg_body)); if (!strcmp(attr, "msg_relayState")) return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(federation_termination)->msg_relayState)); + if (!strcmp(attr, "nameIdentifier")) + return (charPtrConst_wrap(LASSO_PROFILE_CONTEXT(federation_termination)->nameIdentifier)); Py_INCREF(Py_None); return (Py_None); } PyObject *federation_termination_new(PyObject *self, PyObject *args) { - PyObject *server_obj, *user_obj; LassoFederationTermination *federation_termination; - gint provider_type; + PyObject *server_obj; + gint provider_type; - if (CheckArgs(args, "OOI:federation_termination_new")) { - if(!PyArg_ParseTuple(args, (char *) "OOi:federation_termination_new", - &server_obj, &user_obj, &provider_type)) + if (CheckArgs(args, "OI:federation_termination_new")) { + if(!PyArg_ParseTuple(args, (char *) "Oi:federation_termination_new", + &server_obj, &provider_type)) return NULL; } else return NULL; federation_termination = lasso_federation_termination_new(LassoServer_get(server_obj), - LassoUser_get(user_obj), - provider_type); return (LassoFederationTermination_wrap(federation_termination)); @@ -142,21 +143,37 @@ PyObject *federation_termination_init_notification(PyObject *self, PyObject *arg return(int_wrap(codeError)); } -PyObject *federation_termination_process_notification_msg(PyObject *self, PyObject *args) { - PyObject *federation_termination_obj; +PyObject *federation_termination_load_notification_msg(PyObject *self, PyObject *args){ + PyObject *notification_obj; gchar *notification_msg; gint notification_method; gint codeError; - if (CheckArgs(args, "OSI:federation_termination_process_notification_msg")) { - if(!PyArg_ParseTuple(args, (char *) "Osi:federation_termination_process_notification_msg", - &federation_termination_obj, ¬ification_msg, ¬ification_method)) + if (CheckArgs(args, "OSI:federation_termination_load_notification_msg")) { + if(!PyArg_ParseTuple(args, (char *) "Osi:federation_termination_load_notification_msg", + ¬ification_obj, ¬ification_msg, ¬ification_method)) + return NULL; + } + else return NULL; + + codeError = lasso_federation_termination_load_notification_msg(LassoFederationTermination_get(notification_obj), + notification_msg, notification_method); + + return(int_wrap(codeError)); +} + +PyObject *federation_termination_process_notification(PyObject *self, PyObject *args) { + PyObject *federation_termination_obj; + gint codeError; + + if (CheckArgs(args, "O:federation_termination_process_notification")) { + if(!PyArg_ParseTuple(args, (char *) "O:federation_termination_process_notification", + &federation_termination_obj)) return NULL; } else return NULL; - codeError = lasso_federation_termination_process_notification_msg(LassoFederationTermination_get(federation_termination_obj), - notification_msg, notification_method); + codeError = lasso_federation_termination_process_notification(LassoFederationTermination_get(federation_termination_obj)); return(int_wrap(codeError)); } diff --git a/python/environs/py_federation_termination.h b/python/environs/py_federation_termination.h index a016a0b1..c59427d6 100644 --- a/python/environs/py_federation_termination.h +++ b/python/environs/py_federation_termination.h @@ -41,10 +41,12 @@ PyObject *LassoFederationTermination_wrap(LassoFederationTermination *federation PyObject *federation_termination_getattr(PyObject *self, PyObject *args); +PyObject *federation_termination_new(PyObject *self, PyObject *args); + PyObject *federation_termination_build_notification_msg(PyObject *self, PyObject *args); PyObject *federation_termination_destroy(PyObject *self, PyObject *args); PyObject *federation_termination_init_notification(PyObject *self, PyObject *args); -PyObject *federation_termination_new(PyObject *self, PyObject *args); -PyObject *federation_termination_process_notification_msg(PyObject *self, PyObject *args); +PyObject *federation_termination_load_notification_msg(PyObject *self, PyObject *args); +PyObject *federation_termination_process_notification(PyObject *self, PyObject *args); #endif /* __PYLASSO_PY_FEDERATION_TERMINATION_H__ */ diff --git a/python/examples/defederation.py b/python/examples/defederation.py index 22263738..b97a6c3e 100644 --- a/python/examples/defederation.py +++ b/python/examples/defederation.py @@ -4,45 +4,46 @@ import sys sys.path.insert(0, '../') import lasso + +spuser_dump = "1111111111111111111111111" + +idpuser_dump = "1111111111111111111111111" + lasso.init() -# servers : +# SP : spserver = lasso.Server.new("../../examples/sp.xml", - "../../examples/rsapub.pem", "../../examples/rsakey.pem", "../../examples/rsacert.pem", - lasso.signatureMethodRsaSha1) + "../../examples/rsapub.pem", "../../examples/rsakey.pem", "../../examples/rsacert.pem", + lasso.signatureMethodRsaSha1) spserver.add_provider("../../examples/idp.xml", None, None) -idpserver = lasso.Server.new("../../examples/idp.xml", - "../../examples/rsapub.pem", "../../examples/rsakey.pem", "../../examples/rsacert.pem", - lasso.signatureMethodRsaSha1) -spserver.add_provider("../../examples/sp.xml", None, None) - - -# users : -spuser_dump = "1111111111111111111111111222222222222222222222" spuser = lasso.User.new_from_dump(spuser_dump) -idpuser_dump = "1111111111111111111111111222222222222222222222" -idpuser = lasso.User.new_from_dump(idpuser_dump) - - -# sp federation termination : -spdefederation = lasso.FederationTermination.new(spserver, spuser, lasso.providerTypeSp) +spdefederation = lasso.FederationTermination.new(spserver, lasso.providerTypeSp) +spdefederation.set_user_from_dump(spuser_dump) spdefederation.init_notification() spdefederation.build_notification_msg() print 'url : ', spdefederation.msg_url print 'body : ', spdefederation.msg_body -print lasso.get_request_type_from_soap_msg(spdefederation.msg_body) +notification_msg = spdefederation.msg_body + + +# IDP : +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 = lasso.User.new_from_dump(idpuser_dump) +idpdefederation = lasso.FederationTermination.new(idpserver, lasso.providerTypeIdp) +idpdefederation.load_notification_msg(notification_msg, lasso.httpMethodSoap) +print 'NameIdentifier :', idpdefederation.nameIdentifier -# idp federation termination : -print "---------------------------------------------------------" -print " At identity provider " -idpdefederation = lasso.FederationTermination.new(idpserver, idpuser, lasso.providerTypeIdp) -idpdefederation.process_notification_msg(spdefederation.msg_body, lasso.httpMethodSoap) +idpdefederation.set_user_from_dump(idpuser_dump); +idpdefederation.process_notification() -print 'Only return an HTTP OK 200 to the notifier' -print 'End of federation termination' +print 'End of federation termination notification' lasso.shutdown() diff --git a/python/lasso.py b/python/lasso.py index 41f68faa..76ce1a80 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -1064,20 +1064,20 @@ class Logout(ProfileContext): def process_response_msg(self, response_msg, response_method): return lassomod.logout_process_response_msg(self, response_msg, response_method); -class FederationTermination: +class FederationTermination(ProfileContext): """\brief Short desc Long desc """ - - def __isprivate(self, name): - return name == '_o' - def __init__(self, _obj): """ The constructor """ self._o = _obj + ProfileContext.__init__(self, _obj=_obj) + + def __isprivate(self, name): + return name == '_o' def __getattr__(self, name): if self.__isprivate(name): @@ -1090,25 +1090,25 @@ class FederationTermination: ret = User(_obj=ret) return ret - def new(cls, server, user, provider_type): - obj = lassomod.federation_termination_new(server, user, provider_type) + def new(cls, server, provider_type): + obj = lassomod.federation_termination_new(server, provider_type) return FederationTermination(obj) new = classmethod(new) - def add_assertion(self, remote_providerID, assertion): - lassmod.user_add_assertion(remote_providerID, assertion); - def build_notification_msg(self): return lassomod.federation_termination_build_notification_msg(self) def destroy(self): - pass + lassomod.federation_termination_destroy(self) def init_notification(self, remote_providerID = None): - return lassomod.federation_termination_init_notification(self, remote_providerID); + return lassomod.federation_termination_init_notification(self, remote_providerID) + + def load_notification_msg(self, notification_msg, notification_method): + return lassomod.federation_termination_load_notification_msg(self, notification_msg, notification_method) - def process_notification_msg(self, notification_msg, notification_method): - return lassomod.federation_termination_process_notification_msg(self, notification_msg, notification_method); + def process_notification(self): + return lassomod.federation_termination_process_notification(self) class RegisterNameIdentifier: diff --git a/python/lassomod.c b/python/lassomod.c index e90f96d5..e12a8a04 100644 --- a/python/lassomod.c +++ b/python/lassomod.c @@ -213,7 +213,8 @@ static PyMethodDef lasso_methods[] = { {"federation_termination_build_notification_msg", federation_termination_build_notification_msg, METH_VARARGS}, {"federation_termination_destroy", federation_termination_destroy, METH_VARARGS}, {"federation_termination_init_notification", federation_termination_init_notification, METH_VARARGS}, - {"federation_termination_process_notification_msg", federation_termination_process_notification_msg, METH_VARARGS}, + {"federation_termination_load_notification_msg", federation_termination_load_notification_msg, METH_VARARGS}, + {"federation_termination_process_notification", federation_termination_process_notification, METH_VARARGS}, /* py_lecp.h */ {"lecp_new", lecp_new, METH_VARARGS}, -- cgit