diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2005-09-27 08:07:10 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2005-09-27 08:07:10 +0000 |
| commit | b9f9d480804ec50f27a0cc82e997ca5443fbad82 (patch) | |
| tree | 9e42cd28bb6f1cd4c96aaee60eacdbebe286288f | |
| parent | 331dd328d542bcfd8c8006048b1dc84cb4b9076b (diff) | |
| download | lasso-b9f9d480804ec50f27a0cc82e997ca5443fbad82.tar.gz lasso-b9f9d480804ec50f27a0cc82e997ca5443fbad82.tar.xz lasso-b9f9d480804ec50f27a0cc82e997ca5443fbad82.zip | |
Discovery and DataSerivice can pass X509 authentication mecanism if needed.
| -rw-r--r-- | lasso/id-wsf/data_service.c | 12 | ||||
| -rw-r--r-- | lasso/id-wsf/data_service.h | 2 | ||||
| -rw-r--r-- | lasso/id-wsf/discovery.c | 33 | ||||
| -rw-r--r-- | lasso/id-wsf/discovery.h | 30 |
4 files changed, 45 insertions, 32 deletions
diff --git a/lasso/id-wsf/data_service.c b/lasso/id-wsf/data_service.c index 1214859c..55492e9e 100644 --- a/lasso/id-wsf/data_service.c +++ b/lasso/id-wsf/data_service.c @@ -224,7 +224,7 @@ lasso_data_service_process_query_msg(LassoDataService *service, const char *mess int rc; profile = LASSO_WSF_PROFILE(service); - rc = lasso_wsf_profile_process_soap_request_msg(profile, message); + rc = lasso_wsf_profile_process_soap_request_msg(profile, message, security_mech_id); if (rc) { return rc; } @@ -486,8 +486,7 @@ lasso_data_service_process_query_response_msg(LassoDataService *service, int rc; LassoDstQueryResponse *response; - rc = lasso_wsf_profile_process_soap_response_msg( - LASSO_WSF_PROFILE(service), message); + rc = lasso_wsf_profile_process_soap_response_msg(LASSO_WSF_PROFILE(service), message); if (rc) return rc; if (! LASSO_IS_DST_QUERY_RESPONSE(LASSO_WSF_PROFILE(service)->response)) @@ -563,14 +562,14 @@ lasso_data_service_init_modify(LassoDataService *service, const gchar *select, gint lasso_data_service_process_modify_msg(LassoDataService *service, - const gchar *modify_soap_msg) + const gchar *modify_soap_msg, const gchar *security_mech_id) { LassoDstModify *modify; LassoWsfProfile *profile; int rc; profile = LASSO_WSF_PROFILE(service); - rc = lasso_wsf_profile_process_soap_request_msg(profile, modify_soap_msg); + rc = lasso_wsf_profile_process_soap_request_msg(profile, modify_soap_msg, security_mech_id); if (rc) { return rc; } @@ -587,8 +586,7 @@ lasso_data_service_process_modify_msg(LassoDataService *service, return 0;} gint -lasso_data_service_process_modify_response_msg(LassoDataService *service, - const gchar *soap_msg) +lasso_data_service_process_modify_response_msg(LassoDataService *service, const gchar *soap_msg) { LassoDstModifyResponse *response; LassoSoapEnvelope *envelope; diff --git a/lasso/id-wsf/data_service.h b/lasso/id-wsf/data_service.h index 628d2005..2f162b02 100644 --- a/lasso/id-wsf/data_service.h +++ b/lasso/id-wsf/data_service.h @@ -112,7 +112,7 @@ LASSO_EXPORT LassoDstModification* lasso_data_service_add_modification( LassoDataService *service, const gchar *select); LASSO_EXPORT gint lasso_data_service_process_modify_msg(LassoDataService *service, - const gchar *soap_msg); + const gchar *soap_msg, const gchar *security_mech_id); LASSO_EXPORT gint lasso_data_service_process_modify_response_msg(LassoDataService *service, const gchar *soap_msg); diff --git a/lasso/id-wsf/discovery.c b/lasso/id-wsf/discovery.c index 7156c4c3..ccf1ab90 100644 --- a/lasso/id-wsf/discovery.c +++ b/lasso/id-wsf/discovery.c @@ -31,10 +31,14 @@ #include <lasso/id-wsf/data_service.h> #include <lasso/id-wsf/personal_profile_service.h> +#include <lasso/id-wsf/discovery_private.h> +#include <lasso/id-wsf/wsf_profile_private.h> + struct _LassoDiscoveryPrivate { gboolean dispose_has_run; GList *new_entry_ids; + char *security_mech_id; }; /*****************************************************************************/ @@ -412,6 +416,10 @@ lasso_discovery_init_insert(LassoDiscovery *discovery, LASSO_WSF_PROFILE(discovery)->msg_url = g_strdup(description->Endpoint); } /* XXX: else, description->WsdlURLI, get endpoint automatically */ + if (lasso_security_mech_id_is_x509_authentication(security_mech_id) == TRUE) + lasso_wsf_profile_set_security_mech_id(LASSO_WSF_PROFILE(discovery), + security_mech_id); + return 0; } @@ -499,6 +507,10 @@ lasso_discovery_init_query(LassoDiscovery *discovery, const gchar *security_mech LASSO_WSF_PROFILE(discovery)->msg_url = g_strdup(description->Endpoint); } /* XXX: else, description->WsdlURLK, get endpoint automatically */ + if (lasso_security_mech_id_is_x509_authentication(security_mech_id) == TRUE) + lasso_wsf_profile_set_security_mech_id(LASSO_WSF_PROFILE(discovery), + security_mech_id); + return 0; } @@ -514,14 +526,17 @@ lasso_discovery_init_query(LassoDiscovery *discovery, const gchar *security_mech * Return value: 0 on success; or a negative value otherwise. **/ gint -lasso_discovery_process_modify_msg(LassoDiscovery *discovery, const gchar *message) +lasso_discovery_process_modify_msg(LassoDiscovery *discovery, const gchar *message, + const gchar *security_mech_id) { LassoDiscoModify *request; g_return_val_if_fail(LASSO_IS_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); - lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery), message); + if (lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery), + message, security_mech_id) < 0) + return -1; request = LASSO_DISCO_MODIFY(LASSO_WSF_PROFILE(discovery)->request); @@ -666,7 +681,8 @@ lasso_discovery_process_query_msg(LassoDiscovery *discovery, const gchar *messag g_return_val_if_fail(LASSO_IS_DISCOVERY(discovery), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); g_return_val_if_fail(message != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); - lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery), message); + lasso_wsf_profile_process_soap_request_msg(LASSO_WSF_PROFILE(discovery), + message, security_mech_id); envelope = LASSO_WSF_PROFILE(discovery)->soap_envelope_response; request = LASSO_DISCO_QUERY(LASSO_WSF_PROFILE(discovery)->request); @@ -738,11 +754,12 @@ lasso_discovery_build_response_msg(LassoDiscovery *discovery) iter3 = description->SecurityMechID; while (iter3) { if (lasso_security_mech_id_is_saml_authentication( - iter3->data) == TRUE) - credentialRef = lasso_discovery_build_credential( - discovery, NULL); - description->CredentialRef = g_list_append( - description->CredentialRef, credentialRef); + iter3->data) == TRUE) { + credentialRef = lasso_discovery_build_credential( + discovery, NULL); + description->CredentialRef = g_list_append( + description->CredentialRef, credentialRef); + } iter3 = g_list_next(iter3); } iter2 = g_list_next(iter2); diff --git a/lasso/id-wsf/discovery.h b/lasso/id-wsf/discovery.h index 34e166f3..60baa40b 100644 --- a/lasso/id-wsf/discovery.h +++ b/lasso/id-wsf/discovery.h @@ -81,51 +81,49 @@ LASSO_EXPORT GType lasso_discovery_get_type(void); LASSO_EXPORT LassoDiscovery* lasso_discovery_new(LassoServer *server); -LASSO_EXPORT LassoDiscoInsertEntry* lasso_discovery_add_insert_entry( - LassoDiscovery *discovery, - LassoDiscoServiceInstance *serviceInstance, - LassoDiscoResourceID *resourceId); +LASSO_EXPORT LassoDiscoInsertEntry* lasso_discovery_add_insert_entry(LassoDiscovery *discovery, + LassoDiscoServiceInstance *serviceInstance, LassoDiscoResourceID *resourceId); LASSO_EXPORT gint lasso_discovery_add_remove_entry(LassoDiscovery *discovery, - const gchar *entryID); + const gchar *entryID); LASSO_EXPORT LassoDiscoRequestedServiceType* lasso_discovery_add_requested_service_type( - LassoDiscovery *discovery, const gchar *service_type, const gchar *option); + LassoDiscovery *discovery, const gchar *service_type, const gchar *option); LASSO_EXPORT void lasso_discovery_destroy(LassoDiscovery *discovery); LASSO_EXPORT gint lasso_discovery_init_insert(LassoDiscovery *discovery, - LassoDiscoResourceOffering *resourceOffering, const char *security_mech_id); + LassoDiscoResourceOffering *resourceOffering, const char *security_mech_id); + LASSO_EXPORT gint lasso_discovery_init_remove(LassoDiscovery *discovery, const char *entry_id); LASSO_EXPORT gint lasso_discovery_build_response_msg(LassoDiscovery *discovery); + LASSO_EXPORT gint lasso_discovery_build_modify_response_msg(LassoDiscovery *discovery); LASSO_EXPORT gint lasso_discovery_init_modify(LassoDiscovery *discovery, - LassoDiscoResourceOffering *resourceOffering, - LassoDiscoDescription *description); + LassoDiscoResourceOffering *resourceOffering, LassoDiscoDescription *description); LASSO_EXPORT gint lasso_discovery_init_query(LassoDiscovery *discovery, const gchar *security_mech_id); LASSO_EXPORT gint lasso_discovery_process_modify_msg(LassoDiscovery *discovery, - const gchar *message); + const gchar *message, const gchar *security_mech_id); LASSO_EXPORT gint lasso_discovery_process_modify_response_msg(LassoDiscovery *discovery, - const gchar *message); + const gchar *message); LASSO_EXPORT gint lasso_discovery_process_query_msg(LassoDiscovery *discovery, - const gchar *message, const char *security_mech_id); + const gchar *message, const char *security_mech_id); LASSO_EXPORT gint lasso_discovery_process_query_response_msg(LassoDiscovery *discovery, - const gchar *message); + const gchar *message); LASSO_EXPORT LassoDataService* lasso_discovery_get_service(LassoDiscovery *discovery, - const char *service_type); + const char *service_type); LASSO_EXPORT LassoDataService* lasso_discovery_get_service_with_providerId( - LassoDiscovery *discovery, - const char *providerId); + LassoDiscovery *discovery, const char *providerId); LASSO_EXPORT GList* lasso_discovery_get_services(LassoDiscovery *discovery); |
