diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2005-05-12 16:26:49 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2005-05-12 16:26:49 +0000 |
| commit | a64f1cdbe47a5090f2ac9dbb7f3923f9cd1df770 (patch) | |
| tree | b2b7ec7c328b936de38cdcb3d75fea1c7658d7df | |
| parent | 999a6896a33a546fa8160f3a1fd1f191a56dc8b5 (diff) | |
| download | lasso-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.c | 9 | ||||
| -rw-r--r-- | lasso/id-ff/logout.c | 10 | ||||
| -rw-r--r-- | lasso/id-ff/profile.c | 13 |
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; } /** |
