diff options
author | Frederic Peters <fpeters@entrouvert.com> | 2005-08-09 14:13:33 +0000 |
---|---|---|
committer | Frederic Peters <fpeters@entrouvert.com> | 2005-08-09 14:13:33 +0000 |
commit | 9d1fea3e356b5f2f086df2cca27169beb898335e (patch) | |
tree | bc5d7308195a556b1f5af7ded2068827f42fdbf7 /lasso/id-ff/logout.c | |
parent | 830e11754a6bd75814194a27a0c654d2655c705d (diff) | |
download | lasso-9d1fea3e356b5f2f086df2cca27169beb898335e.tar.gz lasso-9d1fea3e356b5f2f086df2cca27169beb898335e.tar.xz lasso-9d1fea3e356b5f2f086df2cca27169beb898335e.zip |
handle the case where logout request is done while there are no session; that
means direct call to build_response_msg, creating a status: requestdenied.
Diffstat (limited to 'lasso/id-ff/logout.c')
-rw-r--r-- | lasso/id-ff/logout.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index 0ef4532e..8c5d36ad 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -166,6 +166,29 @@ lasso_logout_build_response_msg(LassoLogout *logout) return critical_error(LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND); } + if (profile->response == NULL) { + /* no answer, this means this function got called before + * validate_request, probably because there were no active + * session */ + if (profile->http_request_method == LASSO_HTTP_METHOD_SOAP) { + profile->response = lasso_lib_logout_response_new_full( + LASSO_PROVIDER(profile->server)->ProviderID, + LASSO_SAML_STATUS_CODE_REQUEST_DENIED, + LASSO_LIB_LOGOUT_REQUEST(profile->request), + profile->server->certificate ? + LASSO_SIGNATURE_TYPE_WITHX509 : LASSO_SIGNATURE_TYPE_SIMPLE, + LASSO_SIGNATURE_METHOD_RSA_SHA1); + } + if (profile->http_request_method == LASSO_HTTP_METHOD_REDIRECT) { + profile->response = lasso_lib_logout_response_new_full( + LASSO_PROVIDER(profile->server)->ProviderID, + LASSO_SAML_STATUS_CODE_REQUEST_DENIED, + LASSO_LIB_LOGOUT_REQUEST(profile->request), + LASSO_SIGNATURE_TYPE_NONE, + 0); + } + } + /* build logout response message */ if (profile->http_request_method == LASSO_HTTP_METHOD_SOAP) { profile->msg_url = NULL; |