summaryrefslogtreecommitdiffstats
path: root/docs/simplesamlphp-reference-sp-remote.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/simplesamlphp-reference-sp-remote.md')
-rw-r--r--docs/simplesamlphp-reference-sp-remote.md419
1 files changed, 419 insertions, 0 deletions
diff --git a/docs/simplesamlphp-reference-sp-remote.md b/docs/simplesamlphp-reference-sp-remote.md
new file mode 100644
index 0000000..943c862
--- /dev/null
+++ b/docs/simplesamlphp-reference-sp-remote.md
@@ -0,0 +1,419 @@
+SP remote metadata reference
+============================
+
+<!-- {{TOC}} -->
+
+This is a reference for metadata options available for
+`metadata/saml20-sp-remote.php` and `metadata/shib13-sp-remote.php`.
+Both files have the following format:
+
+ <?php
+ /* The index of the array is the entity ID of this SP. */
+ $metadata['entity-id-1'] = array(
+ /* Configuration options for the first SP. */
+ );
+ $metadata['entity-id-2'] = array(
+ /* Configuration options for the second SP. */
+ );
+ /* ... */
+
+
+Common options
+--------------
+
+The following options are common between both the SAML 2.0 protocol
+and Shibboleth 1.3 protocol:
+
+`attributes`
+: This should indicate which attributes an SP should receive. It is
+ used by for example the `consent:Consent` module to tell the user
+ which attributes the SP will receive, and the `core:AttributeLimit`
+ module to limit which attributes are sent to the SP.
+
+`authproc`
+: Used to manipulate attributes, and limit access for each SP. See
+ the [authentication processing filter manual](simplesamlphp-authproc).
+
+`base64attributes`
+: Whether attributes sent to this SP should be base64 encoded. The
+ default is `FALSE`.
+
+`description`
+: A description of this SP. Will be used by various modules when they
+ need to show a description of the SP to the user.
+
+: This option can be translated into multiple languages in the same
+ way as the `name`-option.
+
+`name`
+: The name of this SP. Will be used by various modules when they need
+ to show a name of the SP to the user.
+
+: If this option is unset, the organization name will be used instead (if it is available).
+
+: This option can be translated into multiple languages by specifying
+ the value as an array of language-code to translated name:
+
+ 'name' => array(
+ 'en' => 'A service',
+ 'no' => 'En tjeneste',
+ ),
+
+`OrganizationName`
+: The name of the organization responsible for this SPP.
+ This name does not need to be suitable for display to end users.
+
+: This option can be translated into multiple languages by specifying the value as an array of language-code to translated name:
+
+ 'OrganizationName' => array(
+ 'en' => 'Example organization',
+ 'no' => 'Eksempel organisation',
+ ),
+
+: *Note*: If you specify this option, you must also specify the `OrganizationURL` option.
+
+`OrganizationDisplayName`
+: The name of the organization responsible for this IdP.
+ This name must be suitable for display to end users.
+ If this option isn't specified, `OrganizationName` will be used instead.
+
+: This option can be translated into multiple languages by specifying the value as an array of language-code to translated name.
+
+: *Note*: If you specify this option, you must also specify the `OrganizationName` option.
+
+`OrganizationURL`
+: A URL the end user can access for more information about the organization.
+
+: This option can be translated into multiple languages by specifying the value as an array of language-code to translated URL.
+
+: *Note*: If you specify this option, you must also specify the `OrganizationName` option.
+
+`privacypolicy`
+: This is an absolute URL for where an user can find a privacypolicy
+ for this SP. If set, this will be shown on the consent page.
+ `%SPENTITYID%` in the URL will be replaced with the entity id of
+ this service provider.
+
+: Note that this option also exists in the IdP-hosted metadata. This
+ entry in the SP-remote metadata overrides the option in the
+ IdP-hosted metadata.
+
+`userid.attribute`
+: The attribute name of an attribute which uniquely identifies
+ the user. This attribute is used if SimpleSAMLphp needs to generate
+ a persistent unique identifier for the user. This option can be set
+ in both the IdP-hosted and the SP-remote metadata. The value in the
+ sp-remote metadata has the highest priority. The default value is
+ `eduPersonPrincipalName`.
+
+: Note that this option also exists in the IdP-hosted metadata. This
+ entry in the SP-remote metadata overrides the option in the
+ IdP-hosted metadata.
+
+
+SAML 2.0 options
+----------------
+
+The following SAML 2.0 options are available:
+
+`AssertionConsumerService`
+: The URL of the AssertionConsumerService endpoint for this SP.
+ This option is required - without it you will not be able to send
+ responses back to the SP.
+
+: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints).
+
+`attributes.NameFormat`
+: What value will be set in the Format field of attribute
+ statements. This parameter can be configured multiple places, and
+ the actual value used is fetched from metadata by the following
+ priority:
+
+: 1. SP Remote Metadata
+
+ 2. IdP Hosted Metadata
+
+: The default value is:
+ `urn:oasis:names:tc:SAML:2.0:attrname-format:basic`
+
+: Some examples of values specified in the SAML 2.0 Core
+ Specification:
+
+: - `urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified`
+
+ - `urn:oasis:names:tc:SAML:2.0:attrname-format:uri` (The default
+ in Shibboleth 2.0)
+
+ - `urn:oasis:names:tc:SAML:2.0:attrname-format:basic` (The
+ default in Sun Access Manager)
+
+: You can also define your own value.
+
+: Note that this option also exists in the IdP-hosted metadata. This
+ entry in the SP-remote metadata overrides the option in the
+ IdP-hosted metadata.
+
+: (This option was previously named `AttributeNameFormat`.)
+
+`encryption.blacklisted-algorithms`
+: Blacklisted encryption algorithms. This is an array containing the algorithm identifiers.
+
+: Note that this option also exists in the IdP-hosted metadata. This
+ entry in the SP-remote metadata overrides the option in the
+ [IdP-hosted metadata](./simplesamlphp-reference-idp-hosted).
+
+: The RSA encryption algorithm with PKCS#1 v1.5 padding is blacklisted by default for security reasons. Any assertions
+ encrypted with this algorithm will therefore fail to decrypt. You can override this limitation by defining an empty
+ array in this option (or blacklisting any other algorithms not including that one). However, it is strongly
+ discouraged to do so. For your own safety, please include the string 'http://www.w3.org/2001/04/xmlenc#rsa-1_5' if
+ you make use of this option.
+
+`ForceAuthn`
+: Set this `TRUE` to force the user to reauthenticate when the IdP
+ receives authentication requests from this SP. The default is
+ `FALSE`.
+
+`NameIDFormat`
+: The `NameIDFormat` this SP should receive. The three most commonly
+ used values are:
+
+: 1. `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`
+ 2. `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`
+ 3. `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`
+
+: The `transient` format will generate a new unique ID every time
+ the SP logs in.
+
+: To properly support the `persistent` and `emailAddress` formats,
+ you should configure [NameID generation filters](./saml:nameid)
+ on your IdP.
+
+`nameid.encryption`
+: Whether NameIDs sent to this SP should be encrypted. The default
+ value is `FALSE`.
+
+: Note that this option also exists in the IdP-hosted metadata. This
+ entry in the SP-remote metadata overrides the option in the
+ [IdP-hosted metadata](./simplesamlphp-reference-idp-hosted).
+
+`SingleLogoutService`
+: The URL of the SingleLogoutService endpoint for this SP.
+ This option is required if you want to implement single logout for
+ this SP. If the option isn't specified, this SP will not be logged
+ out automatically when a single logout operation is initialized.
+
+: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints).
+
+`SingleLogoutServiceResponse`
+: The URL logout responses to this SP should be sent. If this option
+ is unspecified, the `SingleLogoutService` endpoint will be used as
+ the recipient of logout responses.
+
+`SPNameQualifier`
+: SP NameQualifier for this SP. If not set, the IdP will set the
+ SPNameQualifier to be the SP entity ID.
+
+`certData`
+: The base64 encoded certificate for this SP. This is an alternative to storing the certificate in a file on disk and specifying the filename in the `certificate`-option.
+
+`certificate`
+: Name of certificate file for this SP. The certificate is used to
+ verify the signature of messages received from the SP (if
+ `redirect.validate`is set to `TRUE`), and to encrypting assertions
+ (if `assertion.encryption` is set to TRUE and `sharedkey` is
+ unset.)
+
+`saml20.sign.response`
+: Whether `<samlp:Response>` messages should be signed.
+ Defaults to `TRUE`.
+
+: Note that this option also exists in the IdP-hosted metadata.
+ The value in the SP-remote metadata overrides the value in the IdP-hosted metadata.
+
+`saml20.sign.assertion`
+: Whether `<saml:Assertion>` elements should be signed.
+ Defaults to `TRUE`.
+
+: Note that this option also exists in the IdP-hosted metadata.
+ The value in the SP-remote metadata overrides the value in the IdP-hosted metadata.
+
+`signature.algorithm`
+: The algorithm to use when signing any message sent to this specific service provider. Defaults to RSA-SHA1.
+: Note that this option also exists in the IdP-hosted metadata.
+ The value in the SP-remote metadata overrides the value in the IdP-hosted metadata.
+: Possible values:
+
+ * `http://www.w3.org/2000/09/xmldsig#rsa-sha1`
+ *Note*: the use of SHA1 is **deprecated** and will be disallowed in the future.
+ * `http://www.w3.org/2001/04/xmldsig-more#rsa-sha256`
+ * `http://www.w3.org/2001/04/xmldsig-more#rsa-sha384`
+ * `http://www.w3.org/2001/04/xmldsig-more#rsa-sha512`
+
+`signature.privatekey`
+: Name of private key file for this IdP, in PEM format. The filename is relative to the cert/-directory.
+: Note that this option also exists in the IdP-hosted metadata. This entry in the SP-remote metadata overrides the option `privatekey` in the IdP-hosted metadata.
+
+`signature.privatekey_pass`
+: Passphrase for the private key. Leave this option out if the private key is unencrypted.
+: Note that this option only is used if `signature.privatekey` is present.
+
+`signature.certificate`
+: Certificate file included by IdP for KeyInfo within the signature for the SP, in PEM format. The filename is relative to the cert/-directory.
+: If `signature.privatekey` is present and `signature.certificate` is left blank, X509Certificate will not be included with the signature.
+
+`simplesaml.nameidattribute`
+: When the value of the `NameIDFormat`-option is set to either
+ `email` or `persistent`, this is the name of the attribute which
+ should be used as the value of the `NameID`. The attribute must
+ be in the set of attributes exported to the SP (that is, be in
+ the `attributes` array). For more advanced control over `NameID`,
+ including the ability to specify any attribute regardless of
+ the set sent to the SP, see the [NameID processing filters](./saml:nameid).
+
+: Typical values can be `mail` for when using the `email` format,
+ and `eduPersonTargetedID` when using the `persistent` format.
+
+`simplesaml.attributes`
+: Whether the SP should receive any attributes from the IdP. The
+ default value is `TRUE`.
+
+`attributeencodings`
+: What encoding should be used for the different attributes. This is
+ an array which maps attribute names to attribute encodings. There
+ are three different encodings:
+
+: - `string`: Will include the attribute as a normal string. This is
+ the default.
+
+: - `base64`: Store the attribute as a base64 encoded string. This
+ is the default when the `base64attributes`-option is set to
+ `TRUE`.
+
+: - `raw`: Store the attribute without any modifications. This
+ makes it possible to include raw XML in the response.
+
+`sign.logout`
+: Whether to sign logout messages sent to this SP.
+
+: Note that this option also exists in the IdP-hosted metadata.
+ The value in the SP-remote metadata overrides the value in the IdP-hosted metadata.
+
+`validate.authnrequest`
+: Whether we require signatures on authentication requests sent from this SP.
+
+: Note that this option also exists in the IdP-hosted metadata.
+ The value in the SP-remote metadata overrides the value in the IdP-hosted metadata.
+
+`validate.logout`
+: Whether we require signatures on logout messages sent from this SP.
+
+: Note that this option also exists in the IdP-hosted metadata.
+ The value in the SP-remote metadata overrides the value in the IdP-hosted metadata.
+
+
+### Encrypting assertions
+
+It is possible to encrypt the assertions sent to a SP. Currently the
+only algorithm supported is `AES128_CBC` or `RIJNDAEL_128`.
+
+There are two modes of encryption supported by SimpleSAMLphp. One is
+symmetric encryption, in which case both the SP and the IdP needs to
+share a key. The other mode is the use of public key encryption. In
+that mode, the public key of the SP is extracted from the certificate
+of the SP.
+
+`assertion.encryption`
+: Whether assertions sent to this SP should be encrypted. The default
+ value is `FALSE`.
+
+: Note that this option also exists in the IdP-hosted metadata. This
+ entry in the SP-remote metadata overrides the option in the
+ IdP-hosted metadata.
+
+`sharedkey`
+: Symmetric key which should be used for encryption. This should be a
+ 128-bit key. If this option is not specified, public key encryption
+ will be used instead.
+
+
+### Fields for signing and validating messages
+
+SimpleSAMLphp only signs authentication responses by default.
+Signing of logout requests and logout responses can be enabled by
+setting the `redirect.sign` option. Validation of received messages
+can be enabled by the `redirect.validate` option.
+
+These options overrides the options set in `saml20-idp-hosted`.
+
+`redirect.sign`
+: Whether logout requests and logout responses sent to this SP should
+ be signed. The default is `FALSE`.
+
+`redirect.validate`
+: Whether authentication requests, logout requests and logout
+ responses received from this SP should be validated. The default is
+ `FALSE`
+
+**Example: Configuration for validating messages**
+
+ 'redirect.validate' => TRUE,
+ 'certificate' => 'example.org.crt',
+
+### Fields for scoping
+
+Only relevant if you are a proxy/bridge and wants to limit the idps this
+sp can use.
+
+`IDPList`
+: The list of scoped idps ie. the list of entityids for idps that are
+relevant for this sp. The final list is the concatenation of the list
+given as parameter to InitSSO (at the sp), the list configured at the
+sp and the list configured at the ipd (here) for this sp. The intersection
+of the final list and the idps configured at the at this idp will be
+presented to the user at the discovery service if neccessary. If only one
+idp is in the intersection the discoveryservice will go directly to the idp.
+
+**Example: Configuration for scoping**
+
+ 'IDPList' => array('https://idp1.wayf.dk', 'https://idp2.wayf.dk'),
+
+
+Shibboleth 1.3 options
+----------------------
+
+The following options for Shibboleth 1.3 SP's are avaiblable:
+
+`AssertionConsumerService`
+: The URL of the AssertionConsumerService endpoint for this SP.
+ This endpoint must accept the SAML responses encoded with the
+ `urn:oasis:names:tc:SAML:1.0:profiles:browser-post` encoding.
+ This option is required - without it you will not be able to send
+ responses back to the SP.
+
+: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints).
+
+`NameQualifier`
+: What the value of the `NameQualifier`-attribute of the
+ `<NameIdentifier>`-element should be. The default value is the
+ entity ID of the SP.
+
+`audience`
+: The value which should be given in the `<Audience>`-element in the
+ `<AudienceRestrictionCondition>`-element in the response. The
+ default value is the entity ID of the SP.
+
+`scopedattributes`
+: Array with names of attributes which should be scoped. Scoped
+ attributes will receive a `Scope`-attribute on the
+ `AttributeValue`-element. The value of the Scope-attribute will
+ be taken from the attribute value:
+
+: `<AttributeValue>someuser@example.org</AttributeValue>`
+
+: will be transformed into
+
+: `<AttributeValue Scope="example.org">someuser</AttributeValue>`
+
+: By default, no attributes are scoped. This option overrides the
+ option with the same name in the `shib13-idp-hosted.php` metadata
+ file.