summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-07-08 13:15:50 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-07-08 13:15:50 +0000
commit40aee726ee094a8ea9cf3cac4d050add79ffa2d3 (patch)
tree8a994dbdacd0b57c0198069462bf54763b49f250
parent6910b8e1f8c881af14156d34fee9ad49b394cc61 (diff)
downloadlasso-40aee726ee094a8ea9cf3cac4d050add79ffa2d3.tar.gz
lasso-40aee726ee094a8ea9cf3cac4d050add79ffa2d3.tar.xz
lasso-40aee726ee094a8ea9cf3cac4d050add79ffa2d3.zip
logout support in makefile.am
-rw-r--r--lasso/id-ff/logout.c55
-rw-r--r--lasso/id-ff/logout.h18
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
}