diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-07-08 13:15:50 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-07-08 13:15:50 +0000 |
| commit | 40aee726ee094a8ea9cf3cac4d050add79ffa2d3 (patch) | |
| tree | 8a994dbdacd0b57c0198069462bf54763b49f250 | |
| parent | 6910b8e1f8c881af14156d34fee9ad49b394cc61 (diff) | |
| download | lasso-40aee726ee094a8ea9cf3cac4d050add79ffa2d3.tar.gz lasso-40aee726ee094a8ea9cf3cac4d050add79ffa2d3.tar.xz lasso-40aee726ee094a8ea9cf3cac4d050add79ffa2d3.zip | |
logout support in makefile.am
| -rw-r--r-- | lasso/id-ff/logout.c | 55 | ||||
| -rw-r--r-- | lasso/id-ff/logout.h | 18 |
2 files changed, 37 insertions, 36 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index 1006791a..0e3d199f 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -28,7 +28,7 @@ /* public methods */ /*****************************************************************************/ -xmlChar * +int lasso_logout_build_request_msg(LassoLogout *logout) { LassoProfileContext *profileContext; @@ -41,25 +41,24 @@ lasso_logout_build_request_msg(LassoLogout *logout) provider = lasso_server_get_provider(profileContext->server, profileContext->remote_providerID); if(provider==NULL){ printf("provider not found\n"); - return(NULL); + return(-1); } protocolProfile = lasso_provider_get_singleLogoutProtocolProfile(provider); if(protocolProfile==NULL){ printf("No protocol profile for logout request message\n"); - return(NULL); + return(-2); } if(xmlStrEqual(protocolProfile, lassoLibProtocolProfileSloSpSoap) || xmlStrEqual(protocolProfile, lassoLibProtocolProfileSloIdpSoap)){ - logout->url = lasso_provider_get_singleLogoutServiceUrl(provider); - logout->method = lassoProfileContextMethodSoap; - return(lasso_node_export_to_soap(profileContext->request)); + profileContext->msg_url = lasso_provider_get_singleLogoutServiceUrl(provider); + profileContext->msg_body = lasso_node_export_to_soap(profileContext->request); } - return(NULL); + return(0); } -xmlChar * +gint lasso_logout_build_response_msg(LassoLogout *logout) { LassoProfileContext *profileContext; @@ -71,23 +70,20 @@ lasso_logout_build_response_msg(LassoLogout *logout) /* get the prototocol profile of the logout */ provider = lasso_server_get_provider(profileContext->server, profileContext->remote_providerID); if(provider==NULL){ - printf("provider not found\n"); - return(NULL); + return(-1); } protocolProfile = lasso_provider_get_singleLogoutProtocolProfile(provider); if(protocolProfile==NULL){ - printf("No protocol profile for logout response message\n"); - return(NULL); + return(-2); } if(xmlStrEqual(protocolProfile, lassoLibProtocolProfileSloSpSoap) || xmlStrEqual(protocolProfile, lassoLibProtocolProfileSloIdpSoap)){ - logout->url = lasso_provider_get_singleLogoutServiceUrl(provider); - logout->method = lassoProfileContextMethodSoap; - return(lasso_node_export_to_soap(profileContext->response)); + profileContext->msg_url = lasso_provider_get_singleLogoutServiceUrl(provider); + profileContext->msg_body = lasso_node_export_to_soap(profileContext->response); } - return(NULL); + return(0); } gint @@ -111,15 +107,15 @@ lasso_logout_init_request(LassoLogout *logout, /* get the name identifier (!!! depend on the provider type : SP or IDP !!!)*/ switch(logout->provider_type){ case lassoProfileContextServiceProviderType: - nameIdentifier = LASSO_NODE(lasso_identity_get_local_nameIdentifier(identity, profileContext->remote_providerID)); + nameIdentifier = LASSO_NODE(lasso_identity_get_local_nameIdentifier(identity)); if(!nameIdentifier) - nameIdentifier = LASSO_NODE(lasso_identity_get_remote_nameIdentifier(identity, profileContext->remote_providerID)); + nameIdentifier = LASSO_NODE(lasso_identity_get_remote_nameIdentifier(identity)); break; case lassoProfileContextIdentityProviderType: /* get the next assertion ( next authenticated service provider ) */ - nameIdentifier = LASSO_NODE(lasso_identity_get_remote_nameIdentifier(identity, profileContext->remote_providerID)); + nameIdentifier = LASSO_NODE(lasso_identity_get_remote_nameIdentifier(identity)); if(!nameIdentifier) - nameIdentifier = LASSO_NODE(lasso_identity_get_local_nameIdentifier(identity, profileContext->remote_providerID)); + nameIdentifier = LASSO_NODE(lasso_identity_get_local_nameIdentifier(identity)); break; } @@ -140,7 +136,8 @@ lasso_logout_init_request(LassoLogout *logout, return(0); } -gint lasso_logout_handle_request(LassoLogout *logout, xmlChar *request_msg, gint request_method) +gint +lasso_logout_handle_request(LassoLogout *logout, xmlChar *request_msg, gint request_method) { LassoProfileContext *profileContext; xmlChar *statusCodeValue = lassoSamlStatusCodeSuccess; @@ -148,15 +145,14 @@ gint lasso_logout_handle_request(LassoLogout *logout, xmlChar *request_msg, gint profileContext = LASSO_PROFILE_CONTEXT(logout); - /* parse LogoutRequest */ switch(request_method){ - case lassoProfileContextMethodSoap: + case lassoHttpMethodSoap: profileContext->request = lasso_logout_request_new_from_soap(request_msg); break; - case lassoProfileContextMethodRedirect: + case lassoHttpMethodRedirect: printf("TODO, implement the redirect method\n"); break; - case lassoProfileContextMethodGet: + case lassoHttpMethodGet: printf("TODO, implement the get method\n"); break; default: @@ -184,15 +180,16 @@ gint lasso_logout_handle_request(LassoLogout *logout, xmlChar *request_msg, gint return(1); } -gint lasso_logout_handle_response(LassoLogout *logout, xmlChar *response_msg, gint response_method) +gint +lasso_logout_handle_response(LassoLogout *logout, xmlChar *response_msg, gint response_method) { LassoProfileContext *profileContext; - gint codeError; profileContext = LASSO_PROFILE_CONTEXT(logout); /* parse LogoutResponse */ - if(response_method==lassoProfileContextMethodSoap){ + switch(response_method){ + case lassoHttpMethodSoap: profileContext->response = lasso_logout_response_new_from_soap(response_msg); } @@ -201,7 +198,7 @@ gint lasso_logout_handle_response(LassoLogout *logout, xmlChar *response_msg, gi // node = lasso_node_get_child(profileContext->response, "StatusCode", NULL); // statusCodeValue = lasso_node_get_attr_value(node, "Value"); - return(codeError); + return(0); } /*****************************************************************************/ diff --git a/lasso/id-ff/logout.h b/lasso/id-ff/logout.h index 9815a612..2c3a594a 100644 --- a/lasso/id-ff/logout.h +++ b/lasso/id-ff/logout.h @@ -46,7 +46,6 @@ typedef struct _LassoLogoutClass LassoLogoutClass; struct _LassoLogout { LassoProfileContext parent; - int method; int provider_type; /*< private >*/ @@ -57,12 +56,17 @@ struct _LassoLogoutClass { }; -LASSO_EXPORT GType lasso_logout_get_type (void); -LASSO_EXPORT LassoLogout *lasso_logout_new (LassoServer *server, - LassoUser *user, - gint provider_type); - - +LASSO_EXPORT GType lasso_logout_get_type (void); +LASSO_EXPORT LassoLogout *lasso_logout_new (LassoServer *server, + LassoUser *user, + gint provider_type); + +LASSO_EXPORT gint lasso_logout_build_request_msg (LassoLogout *logout); +LASSO_EXPORT gint lasso_logout_build_response_msg (LassoLogout *logout); +LASSO_EXPORT gint lasso_logout_init_request (LassoLogout *logout, + xmlChar *remote_providerID); +LASSO_EXPORT gint lasso_logout_handle_request (LassoLogout *logout, xmlChar *request_msg, gint request_method); +LASSO_EXPORT gint lasso_logout_handle_response (LassoLogout *logout, xmlChar *response_msg, gint response_method); #ifdef __cplusplus } |
