diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index a21743b4..8e96927d 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -277,9 +277,9 @@ lasso_logout_init_request(LassoLogout *logout, return(0); } -gint lasso_logout_load_request_msg(LassoLogout *logout, - gchar *request_msg, - lassoHttpMethods request_method) +gint lasso_logout_process_request_msg(LassoLogout *logout, + gchar *request_msg, + lassoHttpMethods request_method) { LassoProfile *profile; @@ -325,7 +325,7 @@ gint lasso_logout_load_request_msg(LassoLogout *logout, } gint -lasso_logout_process_request(LassoLogout *logout) +lasso_logout_validate_request(LassoLogout *logout) { LassoProfile *profile; LassoFederation *federation; @@ -409,28 +409,16 @@ lasso_logout_process_request(LassoLogout *logout) } /* verification is ok, save name identifier in logout object */ - switch(profile->provider_type) { - case lassoProviderTypeSp: - /* at sp, everything is ok, delete the assertion */ - lasso_session_remove_assertion(profile->session, profile->remote_providerID); - break; - case lassoProviderTypeIdp: - /* if more than one sp registered, backup original infos of the sp requester */ - /* FIXME : get the nb of remote providers with a proper way */ + lasso_session_remove_assertion(profile->session, profile->remote_providerID); + if(profile->provider_type==lassoProviderTypeIdp){ logout->initial_remote_providerID = g_strdup(profile->remote_providerID); if(profile->session->providerIDs->len>1){ logout->initial_request = profile->request; profile->request = NULL; - logout->initial_response = profile->response; profile->response = NULL; - profile->remote_providerID = NULL; } - - break; - default: - message(G_LOG_LEVEL_CRITICAL, "Uknown provider type\n"); } return(0); diff --git a/lasso/id-ff/logout.h b/lasso/id-ff/logout.h index cbd0be99..7ad5223c 100644 --- a/lasso/id-ff/logout.h +++ b/lasso/id-ff/logout.h @@ -78,11 +78,11 @@ LASSO_EXPORT gchar* lasso_logout_get_next_providerID (LassoLogout *log LASSO_EXPORT gint lasso_logout_init_request (LassoLogout *logout, gchar *remote_providerID); -LASSO_EXPORT gint lasso_logout_load_request_msg (LassoLogout *logout, +LASSO_EXPORT gint lasso_logout_process_request_msg (LassoLogout *logout, gchar *request_msg, lassoHttpMethods request_method); -LASSO_EXPORT gint lasso_logout_process_request (LassoLogout *logout); +LASSO_EXPORT gint lasso_logout_validate_request (LassoLogout *logout); LASSO_EXPORT gint lasso_logout_process_response_msg (LassoLogout *logout, gchar *response_msg, diff --git a/python/environs/py_logout.c b/python/environs/py_logout.c index 4038dce5..ae9ab597 100644 --- a/python/environs/py_logout.c +++ b/python/environs/py_logout.c @@ -174,36 +174,36 @@ PyObject *logout_init_request(PyObject *self, PyObject *args) { return(int_wrap(codeError)); } -PyObject *logout_load_request_msg(PyObject *self, PyObject *args){ +PyObject *logout_process_request_msg(PyObject *self, PyObject *args){ PyObject *logout_obj; gchar *request_msg; gint request_method; gint codeError; - if (CheckArgs(args, "OSI:logout_load_request_msg")) { - if(!PyArg_ParseTuple(args, (char *) "Osi:logout_load_request_msg", + if (CheckArgs(args, "OSI:logout_process_request_msg")) { + if(!PyArg_ParseTuple(args, (char *) "Osi:logout_process_request_msg", &logout_obj, &request_msg, &request_method)) return NULL; } else return NULL; - codeError = lasso_logout_load_request_msg(LassoLogout_get(logout_obj), request_msg, request_method); + codeError = lasso_logout_process_request_msg(LassoLogout_get(logout_obj), request_msg, request_method); return(int_wrap(codeError)); } -PyObject *logout_process_request(PyObject *self, PyObject *args) { +PyObject *logout_validate_request(PyObject *self, PyObject *args) { PyObject *logout_obj; gint codeError; - if (CheckArgs(args, "O:logout_process_request")) { - if(!PyArg_ParseTuple(args, (char *) "O:logout_process_request", + if (CheckArgs(args, "O:logout_validate_request")) { + if(!PyArg_ParseTuple(args, (char *) "O:logout_validate_request", &logout_obj)) return NULL; } else return NULL; - codeError = lasso_logout_process_request(LassoLogout_get(logout_obj)); + codeError = lasso_logout_vallidate_request(LassoLogout_get(logout_obj)); return(int_wrap(codeError)); } diff --git a/python/environs/py_logout.h b/python/environs/py_logout.h index 7242332f..5f8501f1 100644 --- a/python/environs/py_logout.h +++ b/python/environs/py_logout.h @@ -46,9 +46,9 @@ PyObject *logout_build_response_msg(PyObject *self, PyObject *args); PyObject *logout_destroy(PyObject *self, PyObject *args); PyObject *logout_get_next_providerID(PyObject *self, PyObject *args); PyObject *logout_init_request(PyObject *self, PyObject *args); -PyObject *logout_load_request_msg(PyObject *self, PyObject *args); +PyObject *logout_process_request_msg(PyObject *self, PyObject *args); PyObject *logout_new(PyObject *self, PyObject *args); -PyObject *logout_process_request(PyObject *self, PyObject *args); +PyObject *logout_validate_request(PyObject *self, PyObject *args); PyObject *logout_process_response_msg(PyObject *self, PyObject *args); #endif /* __PYLASSO_PY_LOGOUT_H__ */ diff --git a/python/lassomod.c b/python/lassomod.c index b80bd580..5186b7e4 100644 --- a/python/lassomod.c +++ b/python/lassomod.c @@ -30,6 +30,7 @@ #include "xml/py_xml.h" #include "xml/py_lib_authentication_statement.h" #include "xml/py_lib_authn_request.h" +#include "xml/py_lib_authn_response.h" #include "xml/py_lib_federation_termination_notification.h" #include "xml/py_lib_logout_request.h" #include "xml/py_lib_logout_response.h" @@ -98,6 +99,10 @@ static PyMethodDef lasso_methods[] = { {"lib_authn_request_set_protocolProfile", lib_authn_request_set_protocolProfile, METH_VARARGS}, {"lib_authn_request_set_relayState", lib_authn_request_set_relayState, METH_VARARGS}, + /* py_lib_authn_response.h */ + {"lib_authn_response_new", lib_authn_response_new, METH_VARARGS}, + {"lib_authn_response_add_assertion", lib_authn_response_add_assertion, METH_VARARGS}, + /* py_lib_federation_termination_notification.h */ {"lib_federation_termination_notification_new", lib_federation_termination_notification_new, METH_VARARGS}, {"lib_federation_termination_notification_set_consent", lib_federation_termination_notification_set_consent, METH_VARARGS}, @@ -253,19 +258,19 @@ static PyMethodDef lasso_methods[] = { {"login_process_response_msg", login_process_response_msg, METH_VARARGS}, /* py_logout.h */ - {"logout_getattr", logout_getattr, METH_VARARGS}, + {"logout_getattr", logout_getattr, METH_VARARGS}, {"logout_new", logout_new, METH_VARARGS}, {"logout_build_request_msg", logout_build_request_msg, METH_VARARGS}, {"logout_build_response_msg", logout_build_response_msg, METH_VARARGS}, {"logout_destroy", logout_destroy, METH_VARARGS}, {"logout_get_next_providerID", logout_get_next_providerID, METH_VARARGS}, {"logout_init_request", logout_init_request, METH_VARARGS}, - {"logout_load_request_msg", logout_load_request_msg, METH_VARARGS}, - {"logout_process_request", logout_process_request, METH_VARARGS}, + {"logout_process_request_msg", logout_process_request_msg, METH_VARARGS}, {"logout_process_response_msg", logout_process_response_msg, METH_VARARGS}, + {"logout_validate_request", logout_validate_request, METH_VARARGS}, /* py_register_name_identifier.h */ - {"register_name_identifier_getattr", register_name_identifier_getattr, METH_VARARGS}, + {"register_name_identifier_getattr", register_name_identifier_getattr, METH_VARARGS}, {"register_name_identifier_new", register_name_identifier_new, METH_VARARGS}, {"register_name_identifier_build_request_msg", register_name_identifier_build_request_msg, METH_VARARGS}, {"register_name_identifier_build_response_msg", register_name_identifier_build_response_msg, METH_VARARGS}, diff --git a/tests/login_tests.c b/tests/login_tests.c index 0333208c..aac139a1 100644 --- a/tests/login_tests.c +++ b/tests/login_tests.c @@ -218,15 +218,15 @@ START_TEST(test02_serviceProviderLogin) idpContext = lasso_server_new_from_dump(identityProviderContextDump); idpLogoutContext = lasso_logout_new(idpContext, lassoProviderTypeIdp); fail_unless(idpLogoutContext != NULL, "lasso_logout_new failed"); - rc = lasso_logout_load_request_msg( + rc = lasso_logout_process_request_msg( idpLogoutContext, LASSO_PROFILE(spLogoutContext)->msg_body, lassoHttpMethodSoap); - fail_unless(rc == 0, "lasso_logout_load_request_msg failed"); + fail_unless(rc == 0, "lasso_logout_process_request_msg failed"); rc = lasso_profile_set_identity_from_dump(LASSO_PROFILE(idpLogoutContext), idpIdentityContextDump); fail_unless(rc == 0, "lasso_profile_set_identity_from_dump failed"); - rc = lasso_logout_process_request(idpLogoutContext); + rc = lasso_logout_validate_request(idpLogoutContext); fail_unless(rc == 0, "lasso_logout_process_request failed"); fail_unless(lasso_logout_get_next_providerID(idpLogoutContext) == NULL, "lasso_logout_get_next_providerID failed");