summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2006-12-04 15:22:45 +0000
committerFrederic Peters <fpeters@entrouvert.com>2006-12-04 15:22:45 +0000
commitfa020c55e43460439daad01c0b29895364faa185 (patch)
tree179ed4d72dceb01408e9008454f3f6ab43075d45
parent35ca06dfa06f43b12b5f37f22db64e83c9ff6810 (diff)
use federation from affiliation if necessary in logout
-rw-r--r--lasso/saml-2.0/logout.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/lasso/saml-2.0/logout.c b/lasso/saml-2.0/logout.c
index 8b2ad2d5..0258f438 100644
--- a/lasso/saml-2.0/logout.c
+++ b/lasso/saml-2.0/logout.c
@@ -377,14 +377,22 @@ lasso_saml20_logout_validate_request(LassoLogout *logout)
/* If name identifier is federated, then verify federation */
if (strcmp(name_id->Format, LASSO_SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT) == 0) {
+ char *name_id_sp_name_qualifier = NULL;
if (LASSO_IS_IDENTITY(profile->identity) == FALSE) {
/* XXX: which SAML 2 status code ? */
lasso_saml20_profile_set_response_status(profile,
LASSO_LIB_STATUS_CODE_FEDERATION_DOES_NOT_EXIST);
return critical_error(LASSO_PROFILE_ERROR_IDENTITY_NOT_FOUND);
}
+
+ if (remote_provider->private_data->affiliation_id) {
+ name_id_sp_name_qualifier = remote_provider->private_data->affiliation_id;
+ } else {
+ name_id_sp_name_qualifier = profile->remote_providerID;
+ }
+
federation = g_hash_table_lookup(profile->identity->federations,
- profile->remote_providerID);
+ name_id_sp_name_qualifier);
if (LASSO_IS_FEDERATION(federation) == FALSE) {
/* XXX: which status code in SAML 2 ? */
lasso_saml20_profile_set_response_status(profile,