diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-03-29 12:51:06 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-03-29 12:51:06 +0000 |
| commit | 66992f2b997d1d423be9ab469460ccd22d1979c4 (patch) | |
| tree | c866c7d3ec7580a9d7e859a91ad7063e97ce7032 | |
| parent | 9bdbe6d9375d7506873f4ad77847fcf507603b2d (diff) | |
initial version
| -rw-r--r-- | lasso/Attic/protocols/Makefile.am | 25 | ||||
| -rw-r--r-- | lasso/Attic/protocols/single_sign_on_and_federation.c | 137 | ||||
| -rw-r--r-- | lasso/Attic/protocols/single_sign_on_and_federation.h | 20 |
3 files changed, 182 insertions, 0 deletions
diff --git a/lasso/Attic/protocols/Makefile.am b/lasso/Attic/protocols/Makefile.am new file mode 100644 index 00000000..572e8292 --- /dev/null +++ b/lasso/Attic/protocols/Makefile.am @@ -0,0 +1,25 @@ +liblassoincludedir = $(includedir)/lasso/protocols + +INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/lasso \ + $(LASSO_DEFINES) \ + $(GLIB_CFLAGS) \ + $(LIBXSLT_CFLAGS) \ + $(LIBXML_CFLAGS) \ + $(XMLSEC1_CFLAGS) \ + -DG_LOG_DOMAIN=\"lasso\" + +noinst_LTLIBRARIES = liblasso-protocols.la + +liblasso_protocols_la_SOURCES = \ + single_sign_on_and_federation.c \ + logout.c \ + federation_termination_notification.c \ + register_name_identifier.c + +liblassoinclude_HEADERS = \ + single_sign_on_and_federation.h \ + logout.h \ + federation_termination_notification.h \ + register_name_identifier.h
\ No newline at end of file diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.c b/lasso/Attic/protocols/single_sign_on_and_federation.c new file mode 100644 index 00000000..13c7a6dc --- /dev/null +++ b/lasso/Attic/protocols/single_sign_on_and_federation.c @@ -0,0 +1,137 @@ +#include <lasso/protocols/single_sign_on_and_federation.h> + +xmlChar *lasso_build_url_encoded_message_authnRequest(const char *metadata, + const char *nameIDPolicy, + const char *isPassive, + const char *forceAuthn, + const char *assertionConsumerServiceID, + const char **authnContextClassRefs, + const char **authnContextStatementRefs, + const char *authnContextComparison, + const char *relayState, + const char *proxyCount, + const char **idpList, + const char *consent) +{ + const char *protocolProfile = "artifact"; + + LassoNode *request; + + xmlChar *authority = "https://idpprovider.com"; + xmlChar *query; + + // build AuthnRequest class + request = lasso_lib_authn_request_new(); + + lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request), + (const xmlChar *)lasso_build_unique_id(32)); + lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lassoLibMinorVersion); + lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lasso_get_current_time()); + lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lassoLibMajorVersion); + + lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), + "providerid.com"); + + if(nameIDPolicy){ + lasso_lib_authn_request_set_nameIDPolicy(LASSO_LIB_AUTHN_REQUEST(request), nameIDPolicy); + } + + if(isPassive){ + lasso_lib_authn_request_set_isPassive(LASSO_LIB_AUTHN_REQUEST(request), isPassive); + } + + if(forceAuthn){ + lasso_lib_authn_request_set_forceAuthn(LASSO_LIB_AUTHN_REQUEST(request), forceAuthn); + } + + if(protocolProfile){ + lasso_lib_authn_request_set_protocolProfile(LASSO_LIB_AUTHN_REQUEST(request), protocolProfile); + } + + if(assertionConsumerServiceID){ + lasso_lib_authn_request_set_assertionConsumerServiceID(LASSO_LIB_AUTHN_REQUEST(request), + assertionConsumerServiceID); + } + + if(relayState!=NULL){ + lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), relayState); + } + + if(consent!=NULL){ + lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), consent); + } + + // url-encode the request + //printf("%s\n", lasso_str_sign(lasso_node_url_encode(lareq), xmlSecTransformRsaSha1Id, "rsakey.pem")); + + + + return lasso_node_url_encode(request); + +} + + +LassoNode *lasso_build_authnRequest(const char *providerID, + const char *nameIDPolicy, + const char *isPassive, + const char *forceAuthn, + const char *assertionConsumerServiceID, + const char **authnContextClassRefs, + const char **authnContextStatementRefs, + const char *authnContextComparison, + const char *relayState, + const char *proxyCount, + const char **idpList, + const char *consent) +{ + LassoNode *request; + + // build AuthnRequest class + request = lasso_lib_authn_request_new(); + + lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request), + (const xmlChar *)lasso_build_unique_id(32)); + lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lassoLibMinorVersion); + lasso_samlp_request_abstract_set_issueInstance(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lasso_get_current_time()); + lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), + lassoLibMajorVersion); + + lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), + "providerid.com"); + + if(nameIDPolicy){ + lasso_lib_authn_request_set_nameIDPolicy(LASSO_LIB_AUTHN_REQUEST(request), nameIDPolicy); + } + + if(isPassive){ + lasso_lib_authn_request_set_isPassive(LASSO_LIB_AUTHN_REQUEST(request), isPassive); + } + + if(forceAuthn){ + lasso_lib_authn_request_set_forceAuthn(LASSO_LIB_AUTHN_REQUEST(request), forceAuthn); + } + + if(protocolProfile){ + lasso_lib_authn_request_set_protocolProfile(LASSO_LIB_AUTHN_REQUEST(request), protocolProfile); + } + + if(assertionConsumerServiceID){ + lasso_lib_authn_request_set_assertionConsumerServiceID(LASSO_LIB_AUTHN_REQUEST(request), + assertionConsumerServiceID); + } + + if(relayState!=NULL){ + lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), relayState); + } + + if(consent!=NULL){ + lasso_lib_authn_request_set_providerID(LASSO_LIB_AUTHN_REQUEST(request), consent); + } + + return(request); +} diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.h b/lasso/Attic/protocols/single_sign_on_and_federation.h new file mode 100644 index 00000000..eb5183a6 --- /dev/null +++ b/lasso/Attic/protocols/single_sign_on_and_federation.h @@ -0,0 +1,20 @@ +#ifndef SINGLE_SIGN_ON_AND_FEDERATION_H +#define SINGLE_SIGN_ON_AND_FEDERATION_H + +#include <lasso/lasso.h> + +xmlChar *lasso_build_url_encoded_message_authnRequest(const char *, + const char *, + const char *, + const char *, + const char *, + const char *, + const char **, + const char **, + const char *, + const char *, + const char *, + const char **, + const char *); + +#endif |
