summaryrefslogtreecommitdiffstats
path: root/lasso
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-08-09 14:45:39 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-08-09 14:45:39 +0000
commitb13decd314a04547ae1f1d8e0ab56ed767109cf4 (patch)
tree7f589e1ef3869bb0da3f453b1085700a3e41f1c3 /lasso
parent7c34b0d38b3948cfb7b0c0c9ac26853e33820263 (diff)
downloadlasso-b13decd314a04547ae1f1d8e0ab56ed767109cf4.tar.gz
lasso-b13decd314a04547ae1f1d8e0ab56ed767109cf4.tar.xz
lasso-b13decd314a04547ae1f1d8e0ab56ed767109cf4.zip
Removed Base64 encoding in lasso_lecp_build_authn_response_msg()
Removed Base64 decoding in lasso_lecp_process_authn_request_envelope_msg() Removed the param 'remote_providerID' of lasso_lecp_init_authn_request() Added a param 'remote_providerID' in lasso_lecp_build_authn_request_msg() Added 3 params in lasso_lecp_build_authn_response_envelope_msg() They are necessary to build the Assertion, to process the federation and possibly to set the Status.
Diffstat (limited to 'lasso')
-rw-r--r--lasso/id-ff/lecp.c32
-rw-r--r--lasso/id-ff/lecp.h13
2 files changed, 30 insertions, 15 deletions
diff --git a/lasso/id-ff/lecp.c b/lasso/id-ff/lecp.c
index 6f6edcae..5513b8e9 100644
--- a/lasso/id-ff/lecp.c
+++ b/lasso/id-ff/lecp.c
@@ -73,7 +73,8 @@ lasso_lecp_build_authn_request_envelope_msg(LassoLecp *lecp)
}
gint
-lasso_lecp_build_authn_request_msg(LassoLecp *lecp)
+lasso_lecp_build_authn_request_msg(LassoLecp *lecp,
+ const gchar *remote_providerID)
{
LassoProfile *profile;
@@ -81,7 +82,7 @@ lasso_lecp_build_authn_request_msg(LassoLecp *lecp)
profile = LASSO_PROFILE(lecp);
- profile->msg_url = NULL; /* Proxy knows the SOAP EndPoint of the IDP */
+ profile->msg_url = NULL; /* FIXME use remote_providerID to get url */
profile->msg_body = lasso_node_export_to_soap(profile->request);
if (profile->msg_body == NULL) {
message(G_LOG_LEVEL_CRITICAL, "Error while building the AuthnRequest SOAP message\n");
@@ -104,9 +105,9 @@ lasso_lecp_build_authn_response_msg(LassoLecp *lecp)
message(G_LOG_LEVEL_CRITICAL, "AssertionConsumerServiceURL not found\n");
return(-1);
}
- profile->msg_body = lasso_node_export_to_base64(profile->response);
+ profile->msg_body = lasso_node_export(profile->response);
if (profile->msg_body == NULL) {
- message(G_LOG_LEVEL_CRITICAL, "AuthnResponse base64 msg not found\n");
+ message(G_LOG_LEVEL_CRITICAL, "AuthnResponse msg not found\n");
return(-1);
}
@@ -114,7 +115,10 @@ lasso_lecp_build_authn_response_msg(LassoLecp *lecp)
}
gint
-lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp)
+lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp,
+ gint authentication_result,
+ const gchar *authenticationMethod,
+ const gchar *reauthenticateOnOrAfter)
{
LassoProfile *profile;
LassoProvider *provider;
@@ -135,6 +139,12 @@ lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp)
return(-1);
}
+ /* build lib:AuthnResponse */
+ lasso_login_build_authn_response_msg(LASSO_LOGIN(lecp),
+ authentication_result,
+ authenticationMethod,
+ reauthenticateOnOrAfter);
+
assertionConsumerServiceURL = lasso_provider_get_assertionConsumerServiceURL(provider,
lassoProviderTypeSp,
NULL);
@@ -143,9 +153,12 @@ lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp)
return(-1);
}
+ xmlFree(LASSO_PROFILE(lecp)->msg_body);
+ LASSO_PROFILE(lecp)->msg_body = NULL;
+ xmlFree(LASSO_PROFILE(lecp)->msg_url);
+ LASSO_PROFILE(lecp)->msg_url = NULL;
lecp->authnResponseEnvelope = lasso_authn_response_envelope_new(LASSO_AUTHN_RESPONSE(profile->response),
assertionConsumerServiceURL);
-
LASSO_PROFILE(lecp)->msg_body = lasso_node_export_to_soap(lecp->authnResponseEnvelope);
if (LASSO_PROFILE(lecp)->msg_body == NULL) {
@@ -157,14 +170,13 @@ lasso_lecp_build_authn_response_envelope_msg(LassoLecp *lecp)
}
gint
-lasso_lecp_init_authn_request(LassoLecp *lecp,
- const gchar *remote_providerID)
+lasso_lecp_init_authn_request(LassoLecp *lecp)
{
gint res;
g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
- res = lasso_login_init_authn_request(LASSO_LOGIN(lecp), remote_providerID);
+ res = lasso_login_init_authn_request(LASSO_LOGIN(lecp));
return(res);
}
@@ -194,7 +206,7 @@ lasso_lecp_process_authn_request_envelope_msg(LassoLecp *lecp,
g_return_val_if_fail(LASSO_IS_LECP(lecp), -1);
g_return_val_if_fail(request_msg!=NULL, -1);
- lecp->authnRequestEnvelope = lasso_authn_request_envelope_new_from_export(request_msg, lassoNodeExportTypeBase64);
+ lecp->authnRequestEnvelope = lasso_authn_request_envelope_new_from_export(request_msg, lassoNodeExportTypeXml);
if (lecp->authnRequestEnvelope == NULL) {
message(G_LOG_LEVEL_CRITICAL, "Error while building the authentication request envelope\n");
return(-1);
diff --git a/lasso/id-ff/lecp.h b/lasso/id-ff/lecp.h
index 688bb881..98524009 100644
--- a/lasso/id-ff/lecp.h
+++ b/lasso/id-ff/lecp.h
@@ -69,16 +69,19 @@ LASSO_EXPORT LassoLecp* lasso_lecp_new (LassoSer
LASSO_EXPORT gint lasso_lecp_build_authn_request_envelope_msg (LassoLecp *lecp);
-LASSO_EXPORT gint lasso_lecp_build_authn_request_msg (LassoLecp *lecp);
+LASSO_EXPORT gint lasso_lecp_build_authn_request_msg (LassoLecp *lecp,
+ const gchar *remote_providerID);
-LASSO_EXPORT gint lasso_lecp_build_authn_response_msg (LassoLecp *lecp);
+LASSO_EXPORT gint lasso_lecp_build_authn_response_msg (LassoLecp *lecp);
-LASSO_EXPORT gint lasso_lecp_build_authn_response_envelope_msg (LassoLecp *lecp);
+LASSO_EXPORT gint lasso_lecp_build_authn_response_envelope_msg (LassoLecp *lecp,
+ gint authentication_result,
+ const gchar *authenticationMethod,
+ const gchar *reauthenticateOnOrAfter);
LASSO_EXPORT void lasso_lecp_destroy (LassoLecp *lecp);
-LASSO_EXPORT gint lasso_lecp_init_authn_request (LassoLecp *lecp,
- const gchar *remote_providerID);
+LASSO_EXPORT gint lasso_lecp_init_authn_request (LassoLecp *lecp);
LASSO_EXPORT gint lasso_lecp_init_from_authn_request_msg (LassoLecp *lecp,
gchar *authn_request_msg,