68
73
/* Endpoint type */
69
74
char *binding_s = NULL;
70
if (strcmp(binding, LASSO_SAML20_METADATA_BINDING_SOAP) == 0) {
75
if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_SOAP) == 0) {
71
76
binding_s = "SOAP";
72
} else if (strcmp(binding, LASSO_SAML20_METADATA_BINDING_REDIRECT) == 0) {
77
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_REDIRECT) == 0) {
73
78
binding_s = "HTTP-Redirect";
74
} else if (strcmp(binding, LASSO_SAML20_METADATA_BINDING_POST) == 0) {
79
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_POST) == 0) {
75
80
binding_s = "HTTP-POST";
76
} else if (strcmp(binding, LASSO_SAML20_METADATA_BINDING_ARTIFACT) == 0) {
81
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_ARTIFACT) == 0) {
77
82
binding_s = "HTTP-Artifact";
83
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_PAOS) == 0) {
79
86
message(G_LOG_LEVEL_CRITICAL, "XXX: unknown binding: %s", binding);
198
205
LassoHttpMethod method = LASSO_HTTP_METHOD_NONE;
200
207
const char *possible_bindings[] = {
201
"SOAP", "HTTP-Redirect", "HTTP-Post", NULL
208
"HTTP-Redirect", "HTTP-Post", "SOAP", NULL
203
210
LassoHttpMethod method_bindings[] = {
204
211
LASSO_HTTP_METHOD_SOAP, LASSO_HTTP_METHOD_REDIRECT, LASSO_HTTP_METHOD_POST
235
242
const char *possible_bindings[] = {
236
"HTTP-Artifact", "HTTP-Post", NULL
243
"HTTP-Artifact", "HTTP-Post", "HTTP-POST", "SOAP", NULL
240
247
if (service_id == -1) {
241
sid = provider->private_data->default_assertion_consumer;
248
sid = g_strdup(provider->private_data->default_assertion_consumer);
243
250
sid = g_strdup_printf("%d", service_id);
247
253
descriptor = provider->private_data->SPDescriptor;
248
254
if (descriptor == NULL)
260
267
return g_strdup(l->data);
272
add_assertion_consumer_url_to_list(gchar *key, gpointer value, GList **list)
274
if (strncmp(key, "AssertionConsumerService", 24) == 0) {
275
*list = g_list_append(*list, key);
281
lasso_saml20_provider_get_assertion_consumer_service_url_by_binding(LassoProvider *provider,
284
GHashTable *descriptor;
285
GList *l = NULL, *r = NULL;
287
char *binding_s = NULL;
290
descriptor = provider->private_data->SPDescriptor;
291
if (descriptor == NULL)
294
if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_SOAP) == 0) {
296
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_REDIRECT) == 0) {
297
binding_s = "HTTP-Redirect";
298
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_POST) == 0) {
299
binding_s = "HTTP-POST";
300
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_ARTIFACT) == 0) {
301
binding_s = "HTTP-Artifact";
302
} else if (strcmp(binding, LASSO_SAML2_METADATA_BINDING_PAOS) == 0) {
306
if (binding_s == NULL) {
310
g_hash_table_foreach(descriptor, (GHFunc)add_assertion_consumer_url_to_list, &r);
312
name = g_strdup_printf("AssertionConsumerService %s ", binding_s);
313
lname = strlen(name);
314
for (l = r; l; l = g_list_next(l)) {
316
if (strncmp(name, b, lname) == 0) {
317
l = g_hash_table_lookup(descriptor, b);
325
return g_strdup(l->data);
334
lasso_saml20_provider_get_assertion_consumer_service_binding(LassoProvider *provider,
337
GHashTable *descriptor;
341
char *binding = NULL;
342
const char *possible_bindings[] = {
343
"HTTP-Artifact", "HTTP-Post", "HTTP-POST", "SOAP", NULL
347
if (service_id == -1) {
348
sid = g_strdup(provider->private_data->default_assertion_consumer);
350
sid = g_strdup_printf("%d", service_id);
353
descriptor = provider->private_data->SPDescriptor;
354
if (descriptor == NULL)
357
for (i=0; possible_bindings[i]; i++) {
358
name = g_strdup_printf("AssertionConsumerService %s %s",
359
possible_bindings[i], sid);
360
l = g_hash_table_lookup(descriptor, name);
363
binding = g_strdup(possible_bindings[i]);
265
374
lasso_saml20_provider_accept_http_method(LassoProvider *provider, LassoProvider *remote_provider,
266
375
LassoMdProtocolType protocol_type, LassoHttpMethod http_method,