Scoped Attributes Filtering

This document describes the FilterScopes attribute filter in the saml module.

This filter allows a Service Provider to make sure the scopes included in the values of certain attributes correspond to what the Identity Provider declares in its metadata. If the IdP includes a list of scopes in the metadata, only those scopes will be allowed. On the other hand, if no scopes are declared or the scope is not included in the list of declared scopes, it will be matched against the domain used by the SAML SingleSignOnService endpoint. This means the example.com scope will be allowed in attributes received from an IdP whose SingleSignOnService endpoint is located on the example.com top domain or any subdomain of that. Such scope will be rejected though if the match with the IdP's endpoint does not happen at the top level, like for example with example.com.domain.net .

If you are configuring the metadata of an IdP manually, remember to add an array to it with the key scope , containing the list of scopes expected from that entity.

Configuration

This filter can be configured in the config/authsources.php file, inside the authproc array of the corresponding SAML authentication source in use.

Note that this filter can only be used with SAML authentication sources .

Here are the options available for the filter:

attributes
An array containing a list of attributes that are scoped and therefore should be evaluated. Defaults to eduPersonPrincipalName and eduPersonScopedAffiliation .

Examples

Basic configuration:

    'authproc' => [
        90 => [
            'class' => 'saml:FilterScopes',
        ],
    ],

Specify mail and eduPersonPrincipalName as scoped attributes:

    'authproc' => [
        90 => [
            'class' => 'saml:FilterScopes',
            'attributes' => [
                'mail',
                'eduPersonPrincipalName',
            ],
        ],
    ],

Specify the same attributes in OID format:

    'authproc' => [
        90 => [
            'class' => 'saml:FilterScopes',
            'attributes' => [
                'urn:oid:0.9.2342.19200300.100.1.3',
                'urn:oid:1.3.6.1.4.1.5923.1.1.1.6',
            ],
        ],
    ],