summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2006-12-05 17:16:54 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2006-12-05 17:16:54 +0000
commit7a4be94c3d876e4a6bb2689e6bb8d2841e164dad (patch)
tree4ec7c1c76eca61464c85d0a243eef4e71202791e
parentf491bbfc69e0d50e72e41654818e78ccaa715ed8 (diff)
downloadlasso-7a4be94c3d876e4a6bb2689e6bb8d2841e164dad.tar.gz
lasso-7a4be94c3d876e4a6bb2689e6bb8d2841e164dad.tar.xz
lasso-7a4be94c3d876e4a6bb2689e6bb8d2841e164dad.zip
Added paos response message process support in LassoLogin object.
-rw-r--r--lasso/id-ff/login.c16
-rw-r--r--lasso/id-ff/login.h1
-rw-r--r--lasso/saml-2.0/login.c16
-rw-r--r--lasso/saml-2.0/loginprivate.h1
-rw-r--r--swig/Lasso.i5
5 files changed, 26 insertions, 13 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c
index 9ddd8c49..50fd5bf5 100644
--- a/lasso/id-ff/login.c
+++ b/lasso/id-ff/login.c
@@ -2097,3 +2097,19 @@ lasso_login_validate_request_msg(LassoLogin *login, gboolean authentication_resu
return ret;
}
+
+int
+lasso_login_process_paos_response_msg(LassoLogin *login, gchar *msg)
+{
+ LassoProfile *profile;
+
+ g_return_val_if_fail(LASSO_IS_LOGIN(login), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ);
+
+ profile = LASSO_PROFILE(login);
+
+ IF_SAML2(profile) {
+ return lasso_saml20_login_process_paos_response_msg(login, msg);
+ }
+
+ return 0;
+}
diff --git a/lasso/id-ff/login.h b/lasso/id-ff/login.h
index 263e94be..6ecc25ea 100644
--- a/lasso/id-ff/login.h
+++ b/lasso/id-ff/login.h
@@ -133,6 +133,7 @@ LASSO_EXPORT int lasso_login_set_resourceId(LassoLogin *login, const char *conte
LASSO_EXPORT int lasso_login_validate_request_msg(LassoLogin *login,
gboolean authentication_result, gboolean is_consent_obtained);
+LASSO_EXPORT int lasso_login_process_paos_response_msg(LassoLogin *login, gchar *msg);
#ifdef __cplusplus
}
diff --git a/lasso/saml-2.0/login.c b/lasso/saml-2.0/login.c
index e957b476..c1599aa4 100644
--- a/lasso/saml-2.0/login.c
+++ b/lasso/saml-2.0/login.c
@@ -855,7 +855,7 @@ lasso_saml20_login_process_paos_response_msg(LassoLogin *login, gchar *msg)
xpathCtx = xmlXPathNewContext(doc);
/* check PAOS response */
- xmlnode = NULL;
+ /*xmlnode = NULL;
xmlXPathRegisterNs(xpathCtx, (xmlChar*)"paos", (xmlChar*)LASSO_PAOS_HREF);
xpathObj = xmlXPathEvalExpression((xmlChar*)"//paos:Response", xpathCtx);
if (xpathObj && xpathObj->nodesetval && xpathObj->nodesetval->nodeNr) {
@@ -866,7 +866,7 @@ lasso_saml20_login_process_paos_response_msg(LassoLogin *login, gchar *msg)
xmlXPathFreeContext(xpathCtx);
xmlXPathFreeObject(xpathObj);
return LASSO_PROFILE_ERROR_INVALID_MSG;
- }
+ }*/
xmlXPathRegisterNs(xpathCtx, (xmlChar*)"ecp", (xmlChar*)LASSO_ECP_HREF);
xpathObj = xmlXPathEvalExpression((xmlChar*)"//ecp:RelayState", xpathCtx);
@@ -879,7 +879,7 @@ lasso_saml20_login_process_paos_response_msg(LassoLogin *login, gchar *msg)
profile->remote_providerID = g_strdup(
LASSO_SAMLP2_STATUS_RESPONSE(response)->Issuer->content);
- return 0;
+ return lasso_saml20_login_process_response_status_and_assertion(login);
}
gint
@@ -928,22 +928,12 @@ lasso_saml20_login_process_authn_response_msg(LassoLogin *login, gchar *authn_re
return lasso_saml20_login_process_response_status_and_assertion(login);
}
-
-
gint
lasso_saml20_login_process_response_msg(LassoLogin *login, gchar *response_msg)
{
LassoProfile *profile = LASSO_PROFILE(login);
int rc;
- if (strstr(response_msg, LASSO_PAOS_HREF)) {
- rc = lasso_saml20_login_process_paos_response_msg(login, response_msg);
- if (rc == 0) {
- return lasso_saml20_login_process_response_status_and_assertion(login);
- }
- return rc;
- }
-
rc = lasso_saml20_profile_process_artifact_response(profile, response_msg);
if (rc) {
return rc;
diff --git a/lasso/saml-2.0/loginprivate.h b/lasso/saml-2.0/loginprivate.h
index e53a9772..66ed45a5 100644
--- a/lasso/saml-2.0/loginprivate.h
+++ b/lasso/saml-2.0/loginprivate.h
@@ -53,6 +53,7 @@ gint lasso_saml20_login_build_response_msg(LassoLogin *login, gchar *remote_prov
gint lasso_saml20_login_process_response_msg(LassoLogin *login, gchar *response_msg);
gint lasso_saml20_login_process_authn_response_msg(LassoLogin *login, gchar *authn_response_msg);
gint lasso_saml20_login_accept_sso(LassoLogin *login);
+gint lasso_saml20_login_process_paos_response_msg(LassoLogin *login, gchar *paos_response_msg);
gint lasso_saml20_login_init_idp_initiated_authn_request(LassoLogin *login,
const gchar *remote_providerID);
diff --git a/swig/Lasso.i b/swig/Lasso.i
index 61bc69b5..8f1ca600 100644
--- a/swig/Lasso.i
+++ b/swig/Lasso.i
@@ -5868,6 +5868,10 @@ typedef struct {
THROW_ERROR()
int validateRequestMsg(gboolean authenticationResult, gboolean isConsentObtained);
END_THROW_ERROR()
+
+ THROW_ERROR()
+ int processPaosResponseMsg(gchar *msg);
+ END_THROW_ERROR()
}
%{
@@ -5986,6 +5990,7 @@ int LassoLogin_setSessionFromDump(LassoLogin *self, char *dump) {
#define LassoLogin_setEncryptedResourceId lasso_login_set_encryptedResourceId
#define LassoLogin_setResourceId lasso_login_set_resourceId
#define LassoLogin_validateRequestMsg lasso_login_validate_request_msg
+#define LassoLogin_processPaosResponseMsg lasso_login_process_paos_response_msg
%}