Skip to content
Snippets Groups Projects
simplesamlphp-ecp-idp.txt 2.57 KiB
Newer Older
Frank Tamás's avatar
Frank Tamás committed
Adding Enhanced Client or Proxy (ECP) Profile support to the IdP
===============================================================

This document describes the necessary steps to enable support for the [SAML V2.0 Enhanced Client or Proxy Profile Version 2.0](http://docs.oasis-open.org/security/saml/Post2.0/saml-ecp/v2.0/cs01/saml-ecp-v2.0-cs01.pdf) on a simpleSAMLphp Identity Provider (IdP).

The SAML V2.0 Enhanced Client or Proxy (ECP) profile is a SSO profile for use with HTTP, and clients with the capability to directly contact a principal's identity provider(s) without requiring discovery and redirection by the service provider, as in the case of a browser. It is particularly useful for desktop or server-side HTTP clients.

Enabling ECP Profile on the IdP
-----------------------------------

To enable the IdP to send ECP assertions you must add the `saml20.ecp` option to the `saml20-idp-hosted` metadata file:

    $metadata['__DYNAMIC:1__'] = array(
        [....]
        'auth' => 'example-userpass',
        'saml20.ecp' => true,
    );

Note: authentication filters that require interaction with the user will not work with ECP.

Add new metadata to SPs
-----------------------

After enabling the ECP Profile your IdP metadata will change. An additional ECP `SingleSignOnService` endpoint is added.
You therefore need to update the metadata for your IdP at your SPs.
The `saml20-idp-remote` metadata for simpleSAMLphp SPs should contain something like the following code:

	'SingleSignOnService' =>
	  array (
	    0 =>
	    array (
	      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
	      'Location' => 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php',
	    ),
	    1 =>
	    array (
	      'index' => 0,
	      'Location' => 'https://didp.example.org/simplesaml/saml2/idp/SSOService.php',
	      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP',
	    ),
	  ),

SP metadata on the IdP
----------------------

A SP using the ECP Profile must have an `AssertionConsumerService` endpoint supporting that profile.
This means that you have to use the complex endpoint format in `saml20-sp-remote` metadata.
In general, this should look like the following code:

	'AssertionConsumerService' =>
	  array (
	    0 =>
	    array (
	      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
	      'Location' => 'https://sp.example.org/Shibboleth.sso/SAML2/POST',
	      'index' => 1,
	    ),
	    1 =>
	    array (
	      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:PAOS',
	      'Location' => 'https://sp.example.org/ECP',
	      'index' => 2,
	    ),
	  ),