summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Laniel <dlaniel@entrouvert.com>2007-05-02 13:23:41 +0000
committerDamien Laniel <dlaniel@entrouvert.com>2007-05-02 13:23:41 +0000
commit12d32a23c8bc00d1d0eacad8a3125556c8aba0ee (patch)
tree89d5d8400bc93375d30b4957723a75bab5a5de58
parent62bf5562a78ec00ec497ab85bfc332f272433406 (diff)
added method to get an assertion security token from an EPR
-rw-r--r--lasso/id-ff/identity.c31
-rw-r--r--lasso/id-wsf-2.0/identity.h7
2 files changed, 37 insertions, 1 deletions
diff --git a/lasso/id-ff/identity.c b/lasso/id-ff/identity.c
index bac16b5f..96c8e531 100644
--- a/lasso/id-ff/identity.c
+++ b/lasso/id-ff/identity.c
@@ -270,11 +270,40 @@ lasso_identity_add_endpoint_reference(LassoIdentity *identity, LassoWsAddrEndpoi
}
LassoWsAddrEndpointReference*
-lasso_identity_get_endpoint_reference(LassoIdentity *identity, const gchar *service_type) {
+lasso_identity_get_endpoint_reference(LassoIdentity *identity, const gchar *service_type)
+{
return LASSO_WSA_ENDPOINT_REFERENCE(g_hash_table_lookup(
identity->private_data->eprs, service_type));
}
+LassoSaml2Assertion*
+lasso_identity_assertion_identity_token(LassoIdentity *identity)
+{
+ LassoWsAddrEndpointReference* epr;
+ GList *metadata_item;
+ GList *i;
+ LassoIdWsf2DiscoSecurityContext *security_context;
+ LassoIdWsf2SecToken *sec_token;
+ LassoSaml2Assertion *assertion = NULL;
+
+ epr = lasso_identity_get_endpoint_reference(identity, LASSO_IDWSF2_DISCO_HREF);
+ metadata_item = epr->Metadata->any;
+ for (i = g_list_first(metadata_item); i != NULL; i = g_list_next(i)) {
+ if (LASSO_IS_IDWSF2_DISCO_SECURITY_CONTEXT(i)) {
+ security_context = LASSO_IDWSF2_DISCO_SECURITY_CONTEXT(i);
+ if (security_context->Token != NULL) {
+ sec_token = security_context->Token->data;
+ if (LASSO_IS_SAML2_ASSERTION(sec_token->any)) {
+ assertion = LASSO_SAML2_ASSERTION(sec_token->any);
+ break;
+ }
+ }
+ }
+ }
+
+ return assertion;
+}
+
#endif
diff --git a/lasso/id-wsf-2.0/identity.h b/lasso/id-wsf-2.0/identity.h
index 3214e79f..546da475 100644
--- a/lasso/id-wsf-2.0/identity.h
+++ b/lasso/id-wsf-2.0/identity.h
@@ -31,6 +31,11 @@ extern "C" {
#include <lasso/xml/id-wsf-2.0/disco_svc_metadata.h>
#include <lasso/xml/id-wsf-2.0/disco_service_type.h>
+#include <lasso/xml/id-wsf-2.0/disco_security_context.h>
+#include <lasso/xml/id-wsf-2.0/sec_token.h>
+
+#include <lasso/xml/saml-2.0/saml2_assertion.h>
+
#include <lasso/xml/ws/wsa_endpoint_reference.h>
LASSO_EXPORT gint lasso_identity_add_svc_metadata(LassoIdentity *identity,
@@ -45,6 +50,8 @@ LASSO_EXPORT gint lasso_identity_add_endpoint_reference(LassoIdentity *identity,
LASSO_EXPORT LassoWsAddrEndpointReference* lasso_identity_get_endpoint_reference(
LassoIdentity *identity, const gchar *service_type);
+LASSO_EXPORT LassoSaml2Assertion* lasso_identity_assertion_identity_token(LassoIdentity *identity);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */