summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2005-05-12 16:26:49 +0000
committerFrederic Peters <fpeters@entrouvert.com>2005-05-12 16:26:49 +0000
commita64f1cdbe47a5090f2ac9dbb7f3923f9cd1df770 (patch)
treeb2b7ec7c328b936de38cdcb3d75fea1c7658d7df
parent999a6896a33a546fa8160f3a1fd1f191a56dc8b5 (diff)
downloadlasso-a64f1cdbe47a5090f2ac9dbb7f3923f9cd1df770.tar.gz
lasso-a64f1cdbe47a5090f2ac9dbb7f3923f9cd1df770.tar.xz
lasso-a64f1cdbe47a5090f2ac9dbb7f3923f9cd1df770.zip
profile->nameIdentifier should always points to *local* name identifier.
(not yet tested for federation termination)
-rw-r--r--lasso/id-ff/login.c9
-rw-r--r--lasso/id-ff/logout.c10
-rw-r--r--lasso/id-ff/profile.c13
3 files changed, 11 insertions, 21 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 67a14feb..6670ed2c 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -464,13 +464,8 @@ lasso_login_process_federation(LassoLogin *login, gboolean is_consent_obtained)
lasso_identity_add_federation(LASSO_PROFILE(login)->identity, federation);
}
- if (federation->remote_nameIdentifier) {
- LASSO_PROFILE(login)->nameIdentifier =
- g_object_ref(LASSO_SAML_NAME_IDENTIFIER(federation->remote_nameIdentifier));
- } else {
- LASSO_PROFILE(login)->nameIdentifier =
- g_object_ref(LASSO_SAML_NAME_IDENTIFIER(federation->local_nameIdentifier));
- }
+ LASSO_PROFILE(login)->nameIdentifier =
+ g_object_ref(LASSO_SAML_NAME_IDENTIFIER(federation->local_nameIdentifier));
return ret;
}
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index eee02f7c..5fc8c05c 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -322,6 +322,13 @@ lasso_logout_init_request(LassoLogout *logout, char *remote_providerID,
if (nameIdentifier == NULL) {
return critical_error(LASSO_PROFILE_ERROR_NAME_IDENTIFIER_NOT_FOUND);
}
+ if (federation->local_nameIdentifier) {
+ profile->nameIdentifier = g_object_ref(federation->local_nameIdentifier);
+ } else {
+ profile->nameIdentifier = g_object_ref(nameIdentifier);
+ }
+ } else {
+ profile->nameIdentifier = g_object_ref(nameIdentifier);
}
/* get the provider */
@@ -383,9 +390,6 @@ lasso_logout_init_request(LassoLogout *logout, char *remote_providerID,
LASSO_LIB_LOGOUT_REQUEST(profile->request)->RelayState =
g_strdup(profile->msg_relayState);
- /* Set the name identifier attribute with content local variable */
- profile->nameIdentifier = g_object_ref(nameIdentifier);
-
/* if logout request from a SP and if an HTTP Redirect/GET method, then remove assertion */
if (remote_provider->role == LASSO_PROVIDER_ROLE_IDP && is_http_redirect_get_method) {
lasso_session_remove_assertion(profile->session, profile->remote_providerID);
diff --git a/lasso/id-ff/profile.c b/lasso/id-ff/profile.c
index 1fea54d8..9204a5a4 100644
--- a/lasso/id-ff/profile.c
+++ b/lasso/id-ff/profile.c
@@ -76,19 +76,10 @@ lasso_profile_get_nameIdentifier(LassoProfile *profile)
if (federation == NULL)
return NULL;
- if (remote_provider->role == LASSO_PROVIDER_ROLE_SP) {
- if (federation->remote_nameIdentifier)
- return federation->remote_nameIdentifier;
- return federation->local_nameIdentifier;
- }
-
- if (remote_provider->role == LASSO_PROVIDER_ROLE_IDP) {
- if (federation->local_nameIdentifier)
- return federation->local_nameIdentifier;
+ if (federation->remote_nameIdentifier)
return federation->remote_nameIdentifier;
- }
- return NULL;
+ return federation->local_nameIdentifier;
}
/**