The <CredentialResolver> element configures the component that provides the SP with access to public and private keys and certificates, or credentials. Keys are used to sign messages sent to IdPs and to decrypt data sent to the SP.

The credentials used by an SP MUST correspond to those supplied to relying parties and federations in the SP's metadata, or trust failures will result.

The SP web server manages its own keys and certificates to establish TLS/SSL connections with browser users. While it is technically possible for the SP software to use the same keypair and certificate used by the web server itself, this is generally not a good idea. Also note that in the current implementation, only the shibd process needs to access the SP's credentials, so the web server does not need any special access.

Common Attributes


Filesystem Credential Resolver

Indicated by type="File", loads keys and certificates stored in files using common formats. PEM, DER, and PKCS#12 are supported.

The following two examples are equivalent:

<CredentialResolver type="File" key="/etc/shibboleth/sp.key" certificate="/etc/shibboleth/sp.crt"/>
<CredentialResolver type="File">
    <Key>
        <Path>/etc/shibboleth/sp.key</Path>
    </Key>
    <Certificate>
        <Path>/etc/shibboleth/sp.crt</Path>
    </Certificate>
</CredentialResolver>

Attributes

Child Elements

Version 2.2 and Above

As of version 2.2, the plugin has been rewritten and enhanced with additional capabilities for reloading file-based credentials after changes, and loading remote URLs to disk before use. The following additional attributes and elements can be used on each of the <Key>, <Certificate>, and <CRL> child elements above.

In the case of certificates and CRLs, multiple <Path> and <URL> elements can appear, including a mixture of the two, as required.


Chaining Credential Resolver

Indicated by type="Chaining", allows multiple sources of credentials to be queried in sequence.

With V2.4 and above, this is implied by any configuration with multiple <CredentialResolver> elements, so is no longer explicitly needed.

Primarily used to allow different keys and certificates to be used based on the identity provider. While this works in some situations, it can be complex to get working, and it's strongly advisable for SPs to maintain a single set of credentials to use for all interactions.

When chaining Filesystem resolvers, you will need to assign "names" to each keypair using the keyName attribute or <Name> element for later selection using the <RelyingParty>'s keyName attribute. Generally this should be the "CN" from the X.509 Subject, or a subjectAltName value, that uniquely differentiates the certificates.

A simple example follows, but for more details, see the NativeSPMultipleCredentials topic.

<CredentialResolver type="Chaining">
     <CredentialResolver type="File" key="sp.key" certificate="sp.crt" keyName="default.example.org"/>
     <CredentialResolver type="File" key="special.key" certificate="special.crt" keyName="special.example.org"/>
</CredentialResolver>

Child Elements