summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2006-11-23 09:02:55 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2006-11-23 09:02:55 +0000
commit2c835be36e1a5a3f2f94d757a9726a210f8bfa8d (patch)
tree1789a0390950ad7d02bb07e5afdf85b9d79fbfa9
parentff4eaec6e27d5193458f51a2875706d1e2c88d72 (diff)
downloadlasso-2c835be36e1a5a3f2f94d757a9726a210f8bfa8d.tar.gz
lasso-2c835be36e1a5a3f2f94d757a9726a210f8bfa8d.tar.xz
lasso-2c835be36e1a5a3f2f94d757a9726a210f8bfa8d.zip
Added missing updates about LassoEcp object.
-rw-r--r--lasso/saml-2.0/ecp.c28
-rw-r--r--lasso/saml-2.0/ecp.h2
2 files changed, 28 insertions, 2 deletions
diff --git a/lasso/saml-2.0/ecp.c b/lasso/saml-2.0/ecp.c
index ec3c10ff..88c759da 100644
--- a/lasso/saml-2.0/ecp.c
+++ b/lasso/saml-2.0/ecp.c
@@ -25,6 +25,11 @@
#include <libxml/xpath.h>
#include <libxml/xpathInternals.h>
+#include <lasso/saml-2.0/providerprivate.h>
+#include <lasso/saml-2.0/profileprivate.h>
+#include <lasso/id-ff/providerprivate.h>
+#include <lasso/id-ff/identityprivate.h>
+
#include <lasso/saml-2.0/ecp.h>
/*****************************************************************************/
@@ -87,6 +92,10 @@ lasso_ecp_process_authn_request_msg(LassoEcp *ecp, const char *authn_request_msg
xmlNode *xmlnode;
xmlOutputBuffer *buf;
xmlCharEncodingHandler *handler;
+ LassoProfile *profile;
+ LassoProvider *remote_provider;
+
+ profile = LASSO_PROFILE(ecp);
if (authn_request_msg == NULL) {
return critical_error(LASSO_PROFILE_ERROR_MISSING_REQUEST);
@@ -117,6 +126,22 @@ lasso_ecp_process_authn_request_msg(LassoEcp *ecp, const char *authn_request_msg
g_strdup((char*)(buf->conv ? buf->conv->content : buf->buffer->content));
xmlOutputBufferClose(buf);
+ profile->remote_providerID = lasso_server_get_first_providerID(profile->server);
+ if (profile->remote_providerID == NULL) {
+ return critical_error(LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND);
+ }
+
+ remote_provider = g_hash_table_lookup(profile->server->providers,
+ profile->remote_providerID);
+ if (LASSO_IS_PROVIDER(remote_provider) == FALSE)
+ return critical_error(LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND);
+
+ profile->msg_url = lasso_provider_get_metadata_one(remote_provider,
+ "SingleSignOnService SOAP");
+ if (profile->msg_url == NULL) {
+ return critical_error(LASSO_PROFILE_ERROR_UNKNOWN_PROFILE_URL);
+ }
+
return 0;
}
@@ -232,11 +257,12 @@ lasso_ecp_get_type()
* occured
**/
LassoEcp*
-lasso_ecp_new()
+lasso_ecp_new(LassoServer *server)
{
LassoEcp *ecp;
ecp = g_object_new(LASSO_TYPE_ECP, NULL);
+ LASSO_PROFILE(ecp)->server = g_object_ref(server);
return ecp;
}
diff --git a/lasso/saml-2.0/ecp.h b/lasso/saml-2.0/ecp.h
index 59882db3..52798125 100644
--- a/lasso/saml-2.0/ecp.h
+++ b/lasso/saml-2.0/ecp.h
@@ -59,7 +59,7 @@ struct _LassoEcpClass {
LASSO_EXPORT GType lasso_ecp_get_type(void);
-LASSO_EXPORT LassoEcp* lasso_ecp_new();
+LASSO_EXPORT LassoEcp* lasso_ecp_new(LassoServer *server);
LASSO_EXPORT int lasso_ecp_process_authn_request_msg(LassoEcp *ecp,
const char *authn_request_msg);