Skip to content
Snippets Groups Projects
  1. Aug 17, 2016
  2. Aug 16, 2016
  3. Aug 15, 2016
    • Jaime Pérez's avatar
      Multiple enhancements and fixes to IDPList support in proxy mode. · c70e0b75
      Jaime Pérez authored
      - Bugfix: the modules/saml/www/proxy/invalid_session.php shouldn't call directly the error handler in sspmod_saml_IdP_SAML2. Instead, it should use the SimpleSAML_Auth_State::throwException() method to let it handle the exception appropriately (in this case, it should always return back to the requester).
      - The standard specifies that a "urn:oasis:names:tc:SAML:2.0:status:NoSupportedIDP" or "urn:oasis:names:tc:SAML:2.0:status:NoAvailableIDP" second-level status code should be returned to the requester in case an error occurs. Add a couple of exceptions to represent both statuses, and use them to set the right status code in the response.
      - We shouldn't ask the user to logout in case the IDPList does not offer an IdP we recognize, or in case the proxy enforces the use of an IdP ('idp' configuration option in the auth source) and such IdP is in the IDPList.
      - Similarly, these two cases should also handled in case we are authenticating for the first time, not only when reauthenticating.
      c70e0b75
    • Jaime Pérez's avatar
      bugfix: Fix a bug in AuthMemCookie that prevented the cookie from being set. · 0bd93f6f
      Jaime Pérez authored
      This was due to incorrect use of the SimpleSAML_SessionHandler::setCookie() method to set the cookie, instead of SimpleSAML\Utils\HTTP::setCookie().
      0bd93f6f
  4. Aug 10, 2016
    • Jaime Pérez's avatar
      Make the 'debug' configuration option more fine-grained. · 6c3d49f9
      Jaime Pérez authored
      Some things, like logging of SAML messages or backtraces, are controlled with the 'debug' configuration option. However, it might be possible that we don't want one while we want the other, but that's impossible with just one option.
      
      This commit allows us to configure debugging options independently, but groupping all of them together. This is particularly useful if we want to log backtraces to debug errors, for example, but we don't want to log SAML messages to keep the privacy of the users. This also allows us to get rid of the 'debug.validatexml' configuration option, and group it with other debug options.
      
      This changes are backwards-compatible. Old and new configurations will work at the same time.
      6c3d49f9
    • Jaime Pérez's avatar
      Log backtraces with the same log level as the error messages, whatever that is. · 0858c10c
      Jaime Pérez authored
      It's not very useful to log backtraces always as debug, since that implies getting all the log messages, while backtraces would still help debug a particular error.
      0858c10c
    • Jaime Pérez's avatar
      Typos. · c08ee897
      Jaime Pérez authored
      c08ee897
    • Jaime Pérez's avatar
      bugfix: Avoid the SAML2 IdP resilient to failures when getting DOMNodeList attribute values. · bd5ede94
      Jaime Pérez authored
      Due to recent changes in the SAML2 library, when an attribute has a value that contains XML, its contents are returned as a DOMNodeList instead of a string. This causes problems when running as a proxy, since the SAML2 IdP will obtain attributes in a format that cannot be cast to string. Regardless of the attribute encoding configured in the IdP for a remote SP, we should handle those cases gracefully, so that the IdP don't end up in an uncaught exception.
      bd5ede94
  5. Aug 08, 2016
    • Jaime Pérez's avatar
      bugfix: Make sure we log the user out before reauthenticating. · 0a6f9cfd
      Jaime Pérez authored
      When acting as a proxy, SimpleSAMLphp was re-authenticating the user in case the IdP that authenticated a user in a valid session was not included in the list of IdPs provided by an SP asking for authentication. Since we cannot use Single Sign On there, we should ask the user to logout before authenticating again, avoiding an inconsistent session with SPs associated to different IdPs.
      
      This resolves #84.
      0a6f9cfd
    • Jaime Pérez's avatar
      Minor fixes in the SAML SP test class. · 01c75e44
      Jaime Pérez authored
      Basically, phpdoc formatting and fixing some classes not using namespaces.
      01c75e44
  6. Aug 06, 2016
  7. Aug 05, 2016
  8. Aug 03, 2016
  9. Aug 02, 2016
  10. Jul 29, 2016
  11. Jul 28, 2016
    • Jaime Pérez's avatar
      Use AttributeValue serializable objects instead of dumping manually the XML contents. · 6d215c0b
      Jaime Pérez authored
      This way, we avoid completely any possible XXE attack, and simplify the code as we don't need to deal directly with the DOM. The entire AttributeValue will be saved to the backend as XML, and then recovered back when unserializing.
      6d215c0b
    • Jaime Pérez's avatar
      Remove debugging leftovers. · f261dfc1
      Jaime Pérez authored
      f261dfc1
    • Jaime Pérez's avatar
      bugfix: Allow attributes to contain raw XML as their values. · 977b8e86
      Jaime Pérez authored
      A recent change in simplesamlphp/saml2#60 made the library return a DOMNodeList object when the contents of the AttributeValue element are not text. This lead to a bug, since the returned value is not serializable, and when storing it in the session it will go away as soon as we serialize the session to store it in the backend (whatever that is). This is always, as the SP will always redirect to the URL originating authentication. The result was an empty DOMNodeList object where there should be some value.
      
      This commit makes the SimpleSAML_Session to implement the Serializable interface. When obtaining the attributes during login (doLogin() method), the code will now look for DOMNodeList objects, and dump them as a string with the XML representation of their contents in the 'RawAttributes' array inside $this->authData[$authority]. This allows us to parse the XML back when unserializing, and restore the original DOMNodeList object as the value of the attribute.
      
      The issue was reported originally in the mailing list by Enrico Cavalli, affecting eduPersonTargetedID. This resolves #424.
      977b8e86
  12. Jul 26, 2016
    • Jaime Pérez's avatar
      Update the SAML2 library. · c23722a4
      Jaime Pérez authored
      Now that the SAML2 library has been updated to use the new SimpleSAML\Logger, we can update the dependency here. Since both libraries are interdependent, we are pointing to a specific commit in master, aliasing it to 2.2. That way we can keep business as usual for any other package which may depend on 2.2, while getting the changes into SimpleSAMLphp.
      c23722a4
    • Jaime Pérez's avatar
      Stop using SimpleSAML_Configuration::getBaseURL(). · a5ca1aa3
      Jaime Pérez authored
      Use the recently added SimpleSAML_Configuration::getBasePath() instead. It guarantees the path prepended with a slash, so no need to do that every time when calling the method. As a side effect, we get rid of buggy invocations (calling getBaseUrl() instead of getBaseURL()), and also of old-style convention for the 'baseurlpath' configuration option, allowing a star at the beginning.
      a5ca1aa3
    • Jaime Pérez's avatar
    • Jaime Pérez's avatar
      Bump the version of the SAML2 library. · b02c5432
      Jaime Pérez authored
      Now we are finally using the 2.x branch of the SAML2 library, which was also migrated to use namespaces. Even though the library provides an autoloader that allows loading the classes with the old names using class aliasing, we need to do the migration in one commit (at least for most part of it). This is due to the way SimpleSAMLphp checks data types, using inheritance to check objects agains abstract or more general classes. Even though class aliasing works, there's no way to replicate those relationships, and type checks that use the old class names will fail because the aliases are virtually new classes that don't inherit from others.
      b02c5432
    • Jaime Pérez's avatar
      Prepare to bump the version of XMLSecLibs that we are using. · 09b30417
      Jaime Pérez authored
      The 2.x branch of XMLSecLibs uses namespaces, so we need to make sure we can still load the XMLSec* classes after updating the dependency. We can do that in the autoloader, looking for the classes with namespaces, and creating class aliases.
      09b30417
  13. Jul 25, 2016
  14. Jul 22, 2016
Loading