summaryrefslogtreecommitdiffstats
path: root/lasso/id-ff/register_name_identifier.c
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-07-12 18:58:56 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-07-12 18:58:56 +0000
commit42f4b1adf8df058155f6d0f13deca496daabf779 (patch)
tree5eca01fee79a2f54f32f7d031df6ff18be31bbf5 /lasso/id-ff/register_name_identifier.c
parent2066962a26c43fdff9080ef4bf3e715a332a2198 (diff)
downloadlasso-42f4b1adf8df058155f6d0f13deca496daabf779.tar.gz
lasso-42f4b1adf8df058155f6d0f13deca496daabf779.tar.xz
lasso-42f4b1adf8df058155f6d0f13deca496daabf779.zip
lasso/environs/federation_termination.c
Diffstat (limited to 'lasso/id-ff/register_name_identifier.c')
-rw-r--r--lasso/id-ff/register_name_identifier.c74
1 files changed, 57 insertions, 17 deletions
diff --git a/lasso/id-ff/register_name_identifier.c b/lasso/id-ff/register_name_identifier.c
index 7c1fb019..0d5ef81e 100644
--- a/lasso/id-ff/register_name_identifier.c
+++ b/lasso/id-ff/register_name_identifier.c
@@ -72,6 +72,7 @@ lasso_register_name_identifier_build_request_msg(LassoRegisterNameIdentifier *re
else if(xmlStrEqual(protocolProfile,lassoLibProtocolProfileRniSpHttp)||xmlStrEqual(protocolProfile,lassoLibProtocolProfileRniIdpHttp)){
debug(DEBUG, "building a http get request message\n");
profileContext->request_type = lassoHttpMethodRedirect;
+ lasso_register_name_identifier_rename_attributes_for_query(profileContext->request);
profileContext->msg_url = lasso_node_export_to_query(profileContext->request,
profileContext->server->signature_method,
profileContext->server->private_key);
@@ -126,7 +127,7 @@ lasso_register_name_identifier_init_request(LassoRegisterNameIdentifier *registe
gchar *remote_providerID)
{
LassoProfileContext *profileContext;
- LassoNode *spProvidedNameIdentifier, *idpProvidedNameIdentifier, oldProvidedNameIdentifier;
+ LassoNode *nameIdentifier_node;
LassoIdentity *identity;
LassoRegisterNameIdentifierRequest *request;
@@ -134,35 +135,74 @@ lasso_register_name_identifier_init_request(LassoRegisterNameIdentifier *registe
xmlChar *spNameIdentifier, *spNameQualifier, *spFormat;
xmlChar *oldNameIdentifier, *oldNameQualifier, *oldFormat;
+ xmlChar *providerID;
+
g_return_val_if_fail(LASSO_IS_REGISTER_NAME_IDENTIFIER(register_name_identifier), -1);
- profileContext = LASSO_PROFILE_CONTEXT(register_name_identifier);
+ providerID = lasso_provider_get_providerID(LASSO_PROVIDER(profileContext->server));
+ profileContext = LASSO_PROFILE_CONTEXT(register_name_identifier);
profileContext->remote_providerID = remote_providerID;
/* TODO : implement the setting of the request */
- switch(register_name_identifier->provider_type){
+ switch(profileContext->provider_type){
case lassoProfileContextServiceProviderType:
- //spNameQualifier = lasso_build_unique_id(32);
- //spNameQualifier = profileContext->server->providerID;
+ /* generate a new local name identifier */
+ spNameIdentifier = lasso_build_unique_id(32);
+ spNameQualifier = providerID;
+ spFormat = "federated";
+
+ /* get the old name identifier */
+ identity = lasso_user_get_identity(profileContext->user, remote_providerID);
+ nameIdentifier_node = lasso_identity_get_local_nameIdentifier(identity);
+ if(nameIdentifier_node){
+ oldNameIdentifier = lasso_node_get_content(nameIdentifier_node);
+ oldNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier");
+ oldFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format");
+ }
+
+ /* get the remote name identifier */
+ identity = lasso_user_get_identity(profileContext->user, remote_providerID);
+ nameIdentifier_node = lasso_identity_get_remote_nameIdentifier(identity);
+ idpNameIdentifier = lasso_node_get_content(nameIdentifier_node);
+ idpNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier");
+ idpFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format");
break;
case lassoProfileContextIdentityProviderType:
+ /* generate a new local name identifier */
+ idpNameIdentifier = lasso_build_unique_id(32);
+ idpNameQualifier = providerID;
+ idpFormat = "federated";
+
+ /* get the old name identifier */
+ identity = lasso_user_get_identity(profileContext->user, remote_providerID);
+ nameIdentifier_node = lasso_identity_get_local_nameIdentifier(identity);
+ oldNameIdentifier = lasso_node_get_content(nameIdentifier_node);
+ oldNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier");
+ oldFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format");
+
+ /* get the remote name identifier */
+ identity = lasso_user_get_identity(profileContext->user, remote_providerID);
+ nameIdentifier_node = lasso_identity_get_remote_nameIdentifier(identity);
+ spNameIdentifier = lasso_node_get_content(nameIdentifier_node);
+ spNameQualifier = lasso_node_get_attr_value(nameIdentifier_node, "NameQualifier");
+ spFormat = lasso_node_get_attr_value(nameIdentifier_node, "Format");
break;
default:
debug(ERROR, "Unknown provider type\n");
}
-/* lasso_register_name_identifier_request_new(const xmlChar *providerID, */
-/* const xmlChar *idpProvidedNameIdentifier, */
-/* const xmlChar *idpNameQualifier, */
-/* const xmlChar *idpFormat, */
-/* const xmlChar *spProvidedNameIdentifier, */
-/* const xmlChar *spNameQualifier, */
-/* const xmlChar *spFormat, */
-/* const xmlChar *oldProvidedNameIdentifier, */
-/* const xmlChar *oldNameQualifier, */
-/* const xmlChar *oldFormat) */
-
+ lasso_register_name_identifier_request_new(providerID,
+ idpNameIdentifier,
+ idpNameQualifier,
+ idpFormat,
+ spNameIdentifier,
+ spNameQualifier,
+ spFormat,
+ oldNameIdentifier,
+ oldNameQualifier,
+ oldFormat);
+
return(0);
}
@@ -302,12 +342,12 @@ lasso_register_name_identifier_new(LassoServer *server,
/* set the register_name_identifier object */
register_name_identifier = g_object_new(LASSO_TYPE_REGISTER_NAME_IDENTIFIER, NULL);
- register_name_identifier->provider_type = provider_type;
/* set the properties */
profileContext = LASSO_PROFILE_CONTEXT(register_name_identifier);
profileContext->user = user;
profileContext->server = server;
+ profileContext->provider_type = provider_type;
return(register_name_identifier);
}