[core] rename lasso_server_load_federation to lasso_server_load_metadata
The aim of this function is now to load any metadata file, and to replace completely the use of lasso_server_add_provider. The metadata content argument is replaced by a metadata file path to more closely match other APIs.
This commit is contained in:
parent
a9f9b3d9a2
commit
345c3b50f8
|
@ -172,7 +172,7 @@
|
|||
<func name="lasso_provider_new_from_dump" skip="java"/>
|
||||
<!-- LassoServer -->
|
||||
<func name="lasso_server_get_provider" return_owner="false" />
|
||||
<func name="lasso_server_load_federation" skip="perl,java" />
|
||||
<func name="lasso_server_load_metadata" skip="perl,java" />
|
||||
<!-- IdWsf -->
|
||||
<arg name="abstract" rename="abstract_" language="java"/>
|
||||
<func name="lasso_personal_profile_service_new_full" rename="lasso_personal_profile_server_new_personal_profile_service_full"/>
|
||||
|
|
|
@ -750,7 +750,7 @@ lasso_server_get_encryption_private_key(LassoServer *server)
|
|||
}
|
||||
|
||||
/**
|
||||
* lasso_server_load_federation:
|
||||
* lasso_server_load_metadata:
|
||||
* @server: a #LassoServer object
|
||||
* @role: a #LassoProviderRole value
|
||||
* @federation_file: a C string formatted as SAML 2.0 metadata XML content,
|
||||
|
@ -776,8 +776,8 @@ lasso_server_get_encryption_private_key(LassoServer *server)
|
|||
* </itemizedlist>
|
||||
*/
|
||||
lasso_error_t
|
||||
lasso_server_load_federation(LassoServer *server, LassoProviderRole role, const gchar *federation_metadata, const gchar
|
||||
*trusted_roots, GList *blacklisted_entity_ids, GList **loaded_entity_ids)
|
||||
lasso_server_load_metadata(LassoServer *server, LassoProviderRole role, const gchar *federation_file,
|
||||
const gchar *trusted_roots, GList *blacklisted_entity_ids, GList **loaded_entity_ids)
|
||||
{
|
||||
xmlDoc *doc = NULL;
|
||||
xmlNode *root = NULL;
|
||||
|
@ -794,7 +794,7 @@ lasso_server_load_federation(LassoServer *server, LassoProviderRole role, const
|
|||
lasso_return_val_if_fail(keys_mngr != NULL,
|
||||
LASSO_DS_ERROR_CA_CERT_CHAIN_LOAD_FAILED);
|
||||
}
|
||||
doc = lasso_xml_parse_memory(federation_metadata, strlen(federation_metadata));
|
||||
doc = lasso_xml_parse_file(federation_file);
|
||||
goto_cleanup_if_fail_with_rc(doc, LASSO_SERVER_ERROR_INVALID_XML);
|
||||
root = xmlDocGetRootElement(doc);
|
||||
if (trusted_roots) {
|
||||
|
@ -808,12 +808,9 @@ lasso_server_load_federation(LassoServer *server, LassoProviderRole role, const
|
|||
goto_cleanup_with_rc(LASSO_DS_ERROR_INVALID_SIGNATURE);
|
||||
}
|
||||
}
|
||||
/* TODO: branch to the SAML2 version of this function */
|
||||
if (lasso_strisequal((char*)root->ns->href, LASSO_SAML2_METADATA_HREF)) {
|
||||
lasso_check_good_rc(lasso_saml20_server_load_federation(server, role, root, blacklisted_entity_ids, loaded_entity_ids));
|
||||
} else {
|
||||
/* TODO: iterate SPDescriptor and IDPDescriptor, choose which one to parse by looking at the role enum.
|
||||
* */
|
||||
goto_cleanup_with_rc(LASSO_ERROR_UNIMPLEMENTED);
|
||||
}
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ LASSO_EXPORT lasso_error_t lasso_server_load_affiliation(LassoServer *server, co
|
|||
LASSO_EXPORT lasso_error_t lasso_server_set_encryption_private_key_with_password(LassoServer *server,
|
||||
const gchar *filename_or_buffer, const gchar *password);
|
||||
|
||||
LASSO_EXPORT lasso_error_t lasso_server_load_federation(LassoServer *server, LassoProviderRole role,
|
||||
LASSO_EXPORT lasso_error_t lasso_server_load_metadata(LassoServer *server, LassoProviderRole role,
|
||||
const gchar *federation_file, const gchar *trusted_roots, GList *blacklisted_entity_ids, GList **loaded_entity_ids);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -1942,11 +1942,10 @@ END_TEST
|
|||
#include <stdio.h>
|
||||
|
||||
/* test load federation */
|
||||
START_TEST(test13_test_lasso_server_load_federation)
|
||||
START_TEST(test13_test_lasso_server_load_metadata)
|
||||
{
|
||||
LassoServer *server = NULL;
|
||||
GList *loaded_entity_ids = NULL;
|
||||
char *metadata_content;
|
||||
GList blacklisted_1 = { .data = "https://identities.univ-jfc.fr/idp/prod", .next = NULL };
|
||||
|
||||
check_not_null(server = lasso_server_new(
|
||||
|
@ -1954,15 +1953,13 @@ START_TEST(test13_test_lasso_server_load_federation)
|
|||
TESTSDATADIR "/idp5-saml2/private-key.pem",
|
||||
NULL, /* Secret key to unlock private key */
|
||||
NULL));
|
||||
check_true(g_file_get_contents(TESTSDATADIR "/renater-metadata.xml", &metadata_content,
|
||||
NULL, NULL));
|
||||
check_good_rc(lasso_server_load_federation(server, LASSO_PROVIDER_ROLE_IDP,
|
||||
metadata_content, TESTSDATADIR "/metadata-federation-renater.crt",
|
||||
check_good_rc(lasso_server_load_metadata(server, LASSO_PROVIDER_ROLE_IDP,
|
||||
TESTSDATADIR "/renater-metadata.xml",
|
||||
TESTSDATADIR "/metadata-federation-renater.crt",
|
||||
&blacklisted_1, &loaded_entity_ids));
|
||||
check_equals(g_hash_table_size(server->providers), 101);
|
||||
check_equals(g_list_length(loaded_entity_ids), 101);
|
||||
|
||||
lasso_release_string(metadata_content);
|
||||
lasso_release_gobject(server);
|
||||
}
|
||||
END_TEST
|
||||
|
@ -1981,7 +1978,7 @@ basic_suite()
|
|||
TCase *tc_registry_new_from_xmlNode = tcase_create("Test parsing a node that has a mapping to Lasso Object in the registry");
|
||||
TCase *tc_response_new_from_xmlNode = tcase_create("Test parsing a message from Ping Federate");
|
||||
TCase *tc_custom_namespace = tcase_create("Test custom namespace handling");
|
||||
TCase *tc_load_federation = tcase_create("Test loading a federation metadata file");
|
||||
TCase *tc_load_metadata = tcase_create("Test loading a federation metadata file");
|
||||
|
||||
suite_add_tcase(s, tc_server_load_dump_empty_string);
|
||||
suite_add_tcase(s, tc_server_load_dump_random_string);
|
||||
|
@ -1993,7 +1990,7 @@ basic_suite()
|
|||
suite_add_tcase(s, tc_registry_new_from_xmlNode);
|
||||
suite_add_tcase(s, tc_response_new_from_xmlNode);
|
||||
suite_add_tcase(s, tc_custom_namespace);
|
||||
suite_add_tcase(s, tc_load_federation);
|
||||
suite_add_tcase(s, tc_load_metadata);
|
||||
|
||||
tcase_add_test(tc_server_load_dump_empty_string, test01_server_load_dump_empty_string);
|
||||
tcase_add_test(tc_server_load_dump_random_string, test02_server_load_dump_random_string);
|
||||
|
@ -2007,7 +2004,7 @@ basic_suite()
|
|||
tcase_add_test(tc_response_new_from_xmlNode, test10_test_alldumps);
|
||||
tcase_add_test(tc_response_new_from_xmlNode, test11_get_default_name_id_format);
|
||||
tcase_add_test(tc_custom_namespace, test12_custom_namespace);
|
||||
tcase_add_test(tc_load_federation, test13_test_lasso_server_load_federation);
|
||||
tcase_add_test(tc_load_metadata, test13_test_lasso_server_load_metadata);
|
||||
return s;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue