diff options
| -rw-r--r-- | lasso/id-ff/logout.c | 24 |
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; |
