summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2004-12-19 11:07:22 +0000
committerFrederic Peters <fpeters@entrouvert.com>2004-12-19 11:07:22 +0000
commit74697b19c1160f20cc0e3f40e392b7fa7850b7a5 (patch)
tree2fb3fbfdbbd6bf84e74031a8112d539fa64f2e90
parent2e0efac99e7aa3790eab774ccad59deceb03e169 (diff)
if available, use profile->msg_relayState to init request in init_request
functions.
-rw-r--r--lasso/id-ff/defederation.c22
-rw-r--r--lasso/id-ff/login.c5
-rw-r--r--lasso/id-ff/logout.c9
-rw-r--r--lasso/id-ff/name_registration.c2
4 files changed, 22 insertions, 16 deletions
diff --git a/lasso/id-ff/defederation.c b/lasso/id-ff/defederation.c
index ef8fa1b2..209a6864 100644
--- a/lasso/id-ff/defederation.c
+++ b/lasso/id-ff/defederation.c
@@ -53,9 +53,9 @@
gint
lasso_defederation_build_notification_msg(LassoDefederation *defederation)
{
- LassoProfile *profile;
- LassoProvider *remote_provider;
- gchar *url = NULL, *query = NULL;
+ LassoProfile *profile;
+ LassoProvider *remote_provider;
+ gchar *url, *query;
g_return_val_if_fail(LASSO_IS_DEFEDERATION(defederation),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
@@ -143,7 +143,7 @@ lasso_defederation_init_notification(LassoDefederation *defederation, gchar *rem
LassoProfile*profile;
LassoProvider *remote_provider;
LassoFederation *federation;
- LassoSamlNameIdentifier *nameIdentifier = NULL;
+ LassoSamlNameIdentifier *nameIdentifier;
g_return_val_if_fail(LASSO_IS_DEFEDERATION(defederation),
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
@@ -200,16 +200,20 @@ lasso_defederation_init_notification(LassoDefederation *defederation, gchar *rem
nameIdentifier,
LASSO_SIGNATURE_TYPE_WITHX509,
LASSO_SIGNATURE_METHOD_RSA_SHA1);
- }
- if (http_method == LASSO_HTTP_METHOD_REDIRECT) {
+ if (profile->msg_relayState) {
+ message(G_LOG_LEVEL_WARNING,
+ "RelayState was defined but can't be used "\
+ "in SOAP Federation Termination Notification");
+ }
+
+ } else { /* LASSO_HTTP_METHOD_REDIRECT */
profile->request = lasso_lib_federation_termination_notification_new_full(
LASSO_PROVIDER(profile->server)->ProviderID,
nameIdentifier,
LASSO_SIGNATURE_TYPE_NONE,
0);
- }
- if (LASSO_IS_LIB_FEDERATION_TERMINATION_NOTIFICATION(profile->request) == FALSE) {
- return critical_error(LASSO_PROFILE_ERROR_BUILDING_REQUEST_FAILED);
+ LASSO_LIB_FEDERATION_TERMINATION_NOTIFICATION(profile->request)->RelayState =
+ g_strdup(profile->msg_relayState);
}
/* Set the nameIdentifier attribute from content local variable */
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 090bfdea..b00ad7a9 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -794,6 +794,7 @@ lasso_login_init_authn_request(LassoLogin *login, const gchar *remote_providerID
LASSO_SAMLP_REQUEST_ABSTRACT(request)->MinorVersion = LASSO_LIB_MINOR_VERSION_N;
LASSO_SAMLP_REQUEST_ABSTRACT(request)->IssueInstant = lasso_get_current_time();
request->ProviderID = g_strdup(LASSO_PROVIDER(LASSO_PROFILE(login)->server)->ProviderID);
+ request->RelayState = g_strdup(LASSO_PROFILE(login)->msg_relayState);
if (http_method == LASSO_HTTP_METHOD_POST) {
LASSO_SAMLP_REQUEST_ABSTRACT(request)->sign_method =
@@ -804,7 +805,7 @@ lasso_login_init_authn_request(LassoLogin *login, const gchar *remote_providerID
LASSO_PROFILE(login)->request = LASSO_NODE(request);
if (LASSO_PROFILE(login)->request == NULL) {
- return -2;
+ return critical_error(LASSO_PROFILE_ERROR_BUILDING_REQUEST_FAILED);
}
return 0;
@@ -867,7 +868,7 @@ lasso_login_init_request(LassoLogin *login, gchar *response_msg,
LASSO_PROFILE(login)->server, provider_succint_id_b64);
xmlFree(provider_succint_id_b64);
- request = LASSO_SAMLP_REQUEST_ABSTRACT(g_object_new(LASSO_TYPE_SAMLP_REQUEST, NULL));
+ request = LASSO_SAMLP_REQUEST_ABSTRACT(lasso_samlp_request_new());
request->RequestID = lasso_build_unique_id(32);
request->MajorVersion = LASSO_LIB_MAJOR_VERSION_N;
request->MinorVersion = LASSO_LIB_MINOR_VERSION_N;
diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c
index 6af090f1..f1d21325 100644
--- a/lasso/id-ff/logout.c
+++ b/lasso/id-ff/logout.c
@@ -349,8 +349,7 @@ lasso_logout_init_request(LassoLogout *logout, char *remote_providerID,
nameIdentifier,
LASSO_SIGNATURE_TYPE_WITHX509,
LASSO_SIGNATURE_METHOD_RSA_SHA1);
- }
- if (http_method == LASSO_HTTP_METHOD_REDIRECT) {
+ } else { /* http_method == LASSO_HTTP_METHOD_REDIRECT */
is_http_redirect_get_method = TRUE;
profile->request = lasso_lib_logout_request_new_full(
LASSO_PROVIDER(profile->server)->ProviderID,
@@ -358,9 +357,9 @@ lasso_logout_init_request(LassoLogout *logout, char *remote_providerID,
LASSO_SIGNATURE_TYPE_NONE,
0);
}
- if (LASSO_IS_LIB_LOGOUT_REQUEST(profile->request) == FALSE) {
- return critical_error(LASSO_PROFILE_ERROR_BUILDING_REQUEST_FAILED);
- }
+ if (profile->msg_relayState)
+ 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);
diff --git a/lasso/id-ff/name_registration.c b/lasso/id-ff/name_registration.c
index 83868056..e4151d76 100644
--- a/lasso/id-ff/name_registration.c
+++ b/lasso/id-ff/name_registration.c
@@ -271,6 +271,8 @@ lasso_name_registration_init_request(LassoNameRegistration *name_registration,
if (profile->request == NULL) {
return critical_error(LASSO_PROFILE_ERROR_BUILDING_REQUEST_FAILED);
}
+ LASSO_LIB_REGISTER_NAME_IDENTIFIER_REQUEST(profile->request)->RelayState =
+ g_strdup(profile->msg_relayState);
profile->http_request_method = http_method;