summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2006-12-04 15:49:50 +0000
committerFrederic Peters <fpeters@entrouvert.com>2006-12-04 15:49:50 +0000
commit993f96ed4047ba843ea7a2ce50c44dbeb8668b87 (patch)
tree9b9396252c79baef270a39510d75286266724e48
parentfa020c55e43460439daad01c0b29895364faa185 (diff)
downloadlasso-993f96ed4047ba843ea7a2ce50c44dbeb8668b87.tar.gz
lasso-993f96ed4047ba843ea7a2ce50c44dbeb8668b87.tar.xz
lasso-993f96ed4047ba843ea7a2ce50c44dbeb8668b87.zip
look up for the right federation based on affiliation in logout
-rw-r--r--lasso/saml-2.0/logout.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/lasso/saml-2.0/logout.c b/lasso/saml-2.0/logout.c
index 0258f438..bf9938b3 100644
--- a/lasso/saml-2.0/logout.c
+++ b/lasso/saml-2.0/logout.c
@@ -54,7 +54,6 @@ lasso_saml20_logout_init_request(LassoLogout *logout, LassoProvider *remote_prov
LassoFederation *federation;
LassoSession *session;
LassoSamlp2RequestAbstract *request;
- LassoProvider *provider = NULL;
LassoSaml2EncryptedElement *encrypted_element = NULL;
/* session existence has been checked in id-ff/ */
@@ -75,11 +74,20 @@ lasso_saml20_logout_init_request(LassoLogout *logout, LassoProvider *remote_prov
name_id = assertion->Subject->NameID;
if (name_id->Format && 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) {
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 (federation == NULL) {
return critical_error(LASSO_PROFILE_ERROR_FEDERATION_NOT_FOUND);
}
@@ -150,8 +158,6 @@ lasso_saml20_logout_init_request(LassoLogout *logout, LassoProvider *remote_prov
LASSO_SAMLP2_LOGOUT_REQUEST(request)->NameID = g_object_ref(profile->nameIdentifier);
- provider = g_hash_table_lookup(profile->server->providers, profile->remote_providerID);
-
/* Encrypt NameID */
if (remote_provider &&
remote_provider->private_data->encryption_mode & LASSO_ENCRYPTION_MODE_NAMEID