diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2006-12-05 17:16:54 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2006-12-05 17:16:54 +0000 |
| commit | 7a4be94c3d876e4a6bb2689e6bb8d2841e164dad (patch) | |
| tree | 4ec7c1c76eca61464c85d0a243eef4e71202791e | |
| parent | f491bbfc69e0d50e72e41654818e78ccaa715ed8 (diff) | |
| download | lasso-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.c | 16 | ||||
| -rw-r--r-- | lasso/id-ff/login.h | 1 | ||||
| -rw-r--r-- | lasso/saml-2.0/login.c | 16 | ||||
| -rw-r--r-- | lasso/saml-2.0/loginprivate.h | 1 | ||||
| -rw-r--r-- | swig/Lasso.i | 5 |
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 %} |
