summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-ff/logout.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 139c844b..9c8542bd 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -851,11 +851,25 @@ lasso_logout_validate_request(LassoLogout *logout)
profile->remote_providerID = remote_providerID;
/* Set LogoutResponse */
- profile->response = lasso_logout_response_new(profile->server->providerID,
- lassoSamlStatusCodeSuccess,
- profile->request,
- lassoSignatureTypeWithX509,
- lassoSignatureMethodRsaSha1);
+ if (profile->http_request_method == lassoHttpMethodSoap) {
+ profile->response = lasso_logout_response_new(profile->server->providerID,
+ lassoSamlStatusCodeSuccess,
+ profile->request,
+ lassoSignatureTypeWithX509,
+ lassoSignatureMethodRsaSha1);
+ }
+ else if (profile->http_request_method == lassoHttpMethodRedirect) {
+ profile->response = lasso_logout_response_new(profile->server->providerID,
+ lassoSamlStatusCodeSuccess,
+ profile->request,
+ lassoSignatureTypeNone,
+ 0);
+ }
+ else {
+ message(G_LOG_LEVEL_CRITICAL, "Invalid HTTP request method\n");
+ ret = -1;
+ goto done;
+ }
if (profile->response == NULL) {
message(G_LOG_LEVEL_CRITICAL, "Error while building response\n");
ret = -1;