Commit Graph

57 Commits

Author SHA1 Message Date
Benjamin Dauvergne c07cd3898c SAML 2.0&ID-FF 1.2: simplify and complete metadata loading for multi-role support 2010-03-27 16:52:04 +00:00
Benjamin Dauvergne 97f37266e3 Support SignatureVerifyHint in SAML 2.0 SSO profile and common message handling 2010-03-27 16:51:38 +00:00
Benjamin Dauvergne 7d950e7457 SAML 2.0: change error code for empty ArtifactResolve response to LASSO_PROFILE_ERROR_MISSING_RESPONSE 2010-03-02 11:57:57 +00:00
Benjamin Dauvergne d393251585 SAML 2.0: in lasso_saml20_profile_set_session_from_dump_decrypt, really decrypt
* lasso/saml-2.0/profile.c:
   dump for already signed assertion containing an EncryptedID as
   Subject does not work as before, the decrypted NameID is no more
   included in it, so instead of trying to plug it in the NameID field
   we resort to really deciphering the EncryptedID.
   That could be a performance problem if the session object is stuffed
   with a lot of assertions.
2010-02-17 10:15:21 +00:00
Benjamin Dauvergne ee77424f54 SAML 2.0: in lasso_saml20_profile_process_any_response do not stop on missing issuer
* lasso/saml-2.0/profile.c:
   Issuer is not a mandatory element of SAML 2.0 response,
   but if we do not remember which issuer we sent the request (of if
   the response is spontaneous) then we will receive a provider not found
   error when trying to check the message signature.
2010-02-10 00:34:35 +00:00
Benjamin Dauvergne 8c26e2ba8c Use new SAML2 strings instead of hardcoding query string field names 2010-02-10 00:34:29 +00:00
Benjamin Dauvergne 92efc271a4 SAML 2.0: fix annotations, documentation and signatures 2010-01-29 00:43:50 +00:00
Benjamin Dauvergne 0279087029 Documentation: distribute stylesheet, fix documentation comments, compelte lasso-sections.txt 2010-01-18 10:03:54 +00:00
Benjamin Dauvergne 9d544c49d0 SAML 2.0: report missing request when creating artifact resolve response, fix typo in lasso_saml20_profile_build_post_response_msg 2010-01-14 16:18:28 +00:00
Benjamin Dauvergne 63206b32f2 in saml-2.0/profile.c, in lasso_saml20_build_response_msg, when no url is given, only stop for bindings needing one 2010-01-12 15:40:12 +00:00
Benjamin Dauvergne 39eba085a5 in saml-2.0/profile.c, in lasso_saml20_profile_init_response make direct access 2010-01-12 15:40:11 +00:00
Benjamin Dauvergne 926bfeee2c in saml-2.0/profile.c, in lasso_saml20_init_request better check for supported bindings, do not check for identity or session, report SESSION_NOT_FOUND only if first_in_session is used, do not stop on missing name_id. 2010-01-12 15:40:09 +00:00
Benjamin Dauvergne d42c16e239 Core Node: add args to lasso_node_encrypt to set recipient of an encrypted element 2010-01-12 15:39:57 +00:00
Benjamin Dauvergne 2ff13e5414 SAML 2.0: overhaul for ubuquitous binding support, still need work for HTTP-Artefact 2010-01-12 15:39:48 +00:00
Benjamin Dauvergne 1eb34af43f Core: in profile.c, make lasso_profile_get_nameIdentifier work for transient federations
* lasso/id-ff/profile.c:
   if no LassoIdentity is accessible try to get a name identifier
   through the assertion in the LassoSession object. This allows the
   logout profile to work without an identity object (which is normal
   since logout does not modify the federation status).
2010-01-12 15:39:35 +00:00
Benjamin Dauvergne 4fe35b69cc SAML 2.0: add new function to factorize adding signature to a message 2010-01-12 15:39:33 +00:00
Benjamin Dauvergne d067792e7f in lasso_saml20_profile_export_to_query, checks return values
* lasso/saml-2.0/profile.c:
   in lasso_saml20_profile_export_to_query, check return value of of
   lasso_node_build_query and lasso_query_sign.
2009-12-04 09:05:28 +00:00
Benjamin Dauvergne 2ed0af41c2 Remove message level signature on redirect messages
* lasso/saml-2.0/profile.c:
   remove message level signatures before building query strings.
2009-11-30 15:16:04 +00:00
Benjamin Dauvergne 266e10bb73 Add more check to remove_signature
* lasso/saml-2.0/profile.c:
   check for NULL when accessing klass datas.
2009-11-30 15:16:03 +00:00
Benjamin Dauvergne 2b24cd50e2 SAML2: change lasso_saml20_profile_set_response_status signature
* lasso/saml-2.0/profile.c:
 * lasso/saml-2.0/profileprivate.h:
   make lasso_saml20_profile_set_response_status2 the new implementation
   of lasso_saml20_profile_set_response_status.
   add helper macros to set success, responder and requester first level
   status code.
 * saml-2.0/assertion_query.c:
 * saml-2.0/login.c:
 * saml-2.0/logout.c:
 * saml-2.0/name_id_management.c:
   adapt consumers to the new signature.
2009-10-30 14:47:30 +00:00
Benjamin Dauvergne 5b0f7953b6 SAML2: use the static get_provider helper method in generic profile methods
* lasso/saml-2.0/profile.c:
   instead of accessing directly profile->server use the helper method
   get_provider.
2009-10-30 14:47:25 +00:00
Benjamin Dauvergne 6921dd1d9b ID-FF1.2 and SAML2: remove direct access to profile->server->providers
* client of LassoServer should use lasso_server_get_provider.
 * LASSO_PROFILE_ERRROR_UNKNOWN_PROVIDER was a mistake, it is
   superfluous, use LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND.
2009-10-30 14:47:23 +00:00
Benjamin Dauvergne 7231771856 All: Rework include files handling, separated ID-WSF code from SAML2/ID-FF code
* nearly all C files: change includes for relative paths.
 * lasso/id-wsf/id_wsf.h, lasso/id-wsf-2.0/id_wsf_2.h: add top level
   public include files for ID-WSF 1.0 and ID-WSF 2.0.
 * lasso/id-ff/server.*, lasso/id-ff/session.*, lasso/id-ff/identity.*:
   remove most of the code related to ID-WSF and push into
   lasso/id-wsf/id_ff_extensions.* and lasso/id-wsf-2.0/identity.c,
   lasso/id-wsf-2.0/server.c, lasso/id-wsf-2.0/session.c.
 * lasso/id-wsf-2.0/saml2_login.c,
   lasso/id-wsf-2.0/saml2_login_private.h: same change but for ID-WSF
   2.0 support in SAML2 SSO profile.
2009-08-26 15:14:32 +00:00
Benjamin Dauvergne fbfbe5553d ID-FF&Core: Seal public field of LassoSession
* id-ff/session.h: seal public fields.

 * id-ff/session.c, id-ff/sessionprivate.h: add accessors for reading
   the is_dirty flag and counting store assertions.

 * id-ff/logout.c, id-ff/login.c, saml-2.0/login.c, saml-2.0/logout.c,
   saml-2.0/profile.c: use the new accessors.

 * id-ff/profile.c: include the private header file, use the new
   accessors, and remove unnecessary setting of is_dirty to FALSE (it
   should be false at instanciation).

 * utils.h: add a macro to access private content, prepare for using
   G_TYPE_INSTANCE_GET_PRIVATE and the GObject infrastructure for
   private structures eventually.
2009-08-26 15:13:55 +00:00
Benjamin Dauvergne 8841328655 Do not remove signatures on assertion when using HTTP Redirect
* lasso/saml-2.0/profile.c:
   HTTP Redirect binding mandate to remove signature at the SAML message
   level, but signatures at the assertion, especially if the SP asked for
   it, must be preserved.
2009-06-15 12:27:50 +00:00
Benjamin Dauvergne c5f5f84329 SAML 2.0: Fix many leaks
* lasso/saml-2.0/login.c:
 * lasso/saml-2.0/logout.c:
 * lasso/saml-2.0/name_id_management.c:
 * lasso/saml-2.0/profile.c:
 * lasso/saml-2.0/provider.c:
   do not mix g_malloc strings with libxml strings, use the
   string/gobject handling macros as much as possible, be a good memory
   citizen, don't put your elbows on the table.
2009-04-30 14:58:11 +00:00
Benjamin Dauvergne 2a75e87543 More work on signature validation for SAML 2.0
* lasso/saml-2.0/profile.c:
   in lasso_saml20_profile_process_any_request and
   lasso_saml20_profile_process_any_response do not make signature
   validation failure as call failure, just store the result in
   profile->signature_status and let the upper level functions handle
   what to do with it. also add documentation about those two functions.

 * lasso/saml-2.0/logout.c:
 * lasso/saml-2.0/name_id_management.c:
   handle new signature_status semantic.

 * lasso/saml-2.0/login.c:
   add internal documentation for
   lasso_saml20_login_process_authn_response_msg.
2009-04-27 15:48:53 +00:00
Benjamin Dauvergne 4ba02b0725 lasso_saml20_profile_init_artifact_resolve(): check http_method
* lasso/saml-2.0/profile.c:
   check the given http_method it must one in
   - LASSO_HTTP_METHOD_ARTIFACT_POST,
   - LASSO_HTTP_METHOD_ARTIFACT_GET.
2009-04-27 08:19:24 +00:00
Benjamin Dauvergne 8fe7780441 SAML 2.0: Use new API lasso_url_add_parameter
* lasso/saml-2.0/profile.c:
   use new API lasso_url_add_parameter to handle RelayState parameter
   creation.
2009-04-22 23:49:24 +00:00
Benjamin Dauvergne 280f5d0c72 SAML 2.0: Update generic relaystate handling
* lasso/saml-2.0/profile.c:
   in lasso_saml20_profile_build_redirect_request_msg and
   lasso_saml20_profile_build_redirect_response, use new function
   lasso_saml20_profile_build_http_redirect.
2009-03-27 15:06:44 +00:00
Benjamin Dauvergne 88eaabc94d SAML 2.0: add direct treatment of relaystate for HTTP-Redirect binding
* lasso/saml-2.0/login.c: In
  lasso_saml20_login_process_authn_request_msg change handling of
  relayState do not rely upon parsing by the node object, but extract
  directly from the query string. Use new function
  lasso_get_relaystate_from_query.
* lasso/saml-2.0/logout.c: In lasso_saml20_logout_process_request_msg
  change handling of relayState do not rely upon parsing by the node
  object, but extract directly from the query string.
* lasso/saml-2.0/profile.c: In
  lasso_saml20_profile_init_artifact_resolve, add handling of the
  relayState transmitted to the assertion consumer URL.
* lasso/saml-2.0/name_id_management.c: In
  lasso_name_id_management_process_request_msg change handling of
  relayState do not rely upon parsing by the node
  object, but extract directly from the query string.
2009-03-27 15:05:52 +00:00
Benjamin Dauvergne f55ff8ea5e SAML 2.0: Add helper function to implement the HTTP-Redirect binding
* lasso/saml-2.0/profile.c, lasso/saml-2.0/profileprivate.h:
   - remove_all_signature traverse a tree of LassoNode objects to unset
     all signature_type field in on nodes supporting signature
     generation.
   - lasso_saml20_profile_export_to_query does the job of generateing
     the url containing the message content and the relaystate, then
     sign it using lasso_query_sign.
   - lasso_saml20_profile_build_http_redirect use those two functions
     and the metadatas to build the signed redirect url.
2009-03-27 15:05:44 +00:00
Benjamin Dauvergne 5d93009e0b SAML 2.0: add internal generic implementation
* lasso/saml-2.0/profile.c:
 * lasso/saml-2.0/profileprivate.h:
   the current effort is to simplify implementation code in saml-2.0 and
   much of the other frameworks. Those new methods:
        lasso_saml20_init_request
        lasso_saml20_profile_process_name_identifier_decryption
        lasso_saml20_profile_process_soap_request
        lasso_saml20_profile_process_soap_response
        lasso_saml20_profile_process_any_request
        lasso_saml20_profile_process_any_response
        lasso_saml20_profile_setup_request_signing
        lasso_saml20_profile_build_request_msg
        lasso_saml20_profile_build_response
        lasso_saml20_profile_init_response
   should help reduce code in login.c, logout.c, name_id_management.c
   and assertion_query.c. They should also permit to make all profiles
   at the same level of binding support
   (GET,REDIRECT,POST,ARTIFACT_GET,ARTIFACT_POST).

   Those function centralize error code handling, initialization of
   commong class (LassoSamlp2StatusResponse and
   LassoSamlp2RequestAbstract) and also the handling of NameID
   decryption.
2009-03-27 15:05:07 +00:00
Benjamin Dauvergne b09ef2e015 Core: do not mix public and private headers
* lots of files:
   explicitely load the internal header xml/private.h where needed.
2009-03-27 15:04:26 +00:00
Benjamin Dauvergne 9ed0670e48 * Remove ending blanks 2008-09-12 15:06:58 +00:00
Benjamin Dauvergne ae1f6a297c * Remove warnings:
- remove unused parameter from private function signatures
 - remove unused variable
 - initialize variable potentially accessed uninitialized
 - add G_GNUC_UNUSED if function is public or adhering to an interface, and a
   parameter is unused.
 - if ID-WSF is not compiled in, define stubs with G_GNUC_UNUSED on parameters.
 The goal is to compile with -Werror.
2008-09-12 13:57:22 +00:00
Damien Laniel cf4cf42f1a added a missing reference 2008-05-21 22:13:16 +00:00
Damien Laniel a6ed1b1c11 added some more missing unreference 2008-05-21 17:28:44 +00:00
Benjamin Dauvergne 6a1e276c71 * validate input in lasso_profile_is_saml_query 2008-05-13 13:48:11 +00:00
Frédéric Péters ea872ad761 error checking when processing artifact response. 2007-10-19 08:54:28 +00:00
Damien Laniel 4fc6657e0c updated Copyright dates in all files 2007-05-30 17:17:45 +00:00
Frédéric Péters 7de91cfa6e removed memory leak (GPtrArray was not freed) by directly accessing assertions
from their hash table instead of an intermediary GPtrArray.
2007-01-03 20:58:38 +00:00
Frédéric Péters 5dee8a3682 changed test against assertions which could yield a useless
LASSO_ERROR_UNDEFINED
2006-12-27 16:12:50 +00:00
Frédéric Péters 1b0f96f6c7 fixed a few (harmless) warnings detected when compiling with -Wall
-Wmissing-declarations -Wdeclaration-after-statement
2006-12-21 00:03:08 +00:00
Frédéric Péters c5572210da SAMLv2 compliance fix (mostly RelayState and affiliations related) 2006-12-07 15:19:30 +00:00
Frédéric Péters 08bcef745b re-enabling saml2 signature check 2006-11-29 23:36:26 +00:00
Damien Laniel 6ce1f2f044 return -1 was not cute 2006-11-24 09:11:11 +00:00
Damien Laniel 0a391478be Added an original node to encrypted elements, only in dumps, for the dump to be readable 2006-11-23 17:44:26 +00:00
Damien Laniel 1e7983b0df Encrypt and decrypt Assertion 2006-11-21 13:31:35 +00:00
Damien Laniel 45e7e8e448 Replaced some LASSO_ERROR_UNDEFINED with real error codes 2006-11-14 10:36:40 +00:00