...
- If the requesting provider is unauthenticated – due to a lack of SSL client authentication because the AA is not protected by an
https://
URL – the default relying party is always used. - If the requesting provider is Shibboleth 1.1 or less, the default relying party is used.
- If a
RelyingParty
element'sproviderId
attribute matches the name sent by the SP, then that element is used. - A metadata lookup is performed using the
metadata.xml
files supplied byMetadataProvider
elements to determine whether the SP is a member of a common federation. If there is aRelyingParty
element that has the sameproviderId
as the URI of the the federation, it is used. If not, the default relying party handles the request.<RelyingParty name="URI"
providerId="URI"
signingCredential="string"
AAUrl="URL"
defaultAuthMethod="URN"
passThruErrors="true/false"
providerId="string"
signAssertions="true/false">In addition to its attributes, this element may contain a
NameID
element to specify a naming mechanism for assertions sent to this relying party. name
: EachRelyingParty
element is differentiated by a URI specified in thename
attribute. An SP will send its providerId with its requests; if the URI it provides here matches thename
attribute, this element will be used in the transaction. If there is no direct match, the !IdP uses metadata to try to find a federation that the service provider is a member of.providerId
: If the IdP should perform transactions with this relying party using a different providerId than the default for the IdP as a whole, it may be specified individually using aproviderId
attribute on this element.signingCredential
: This attribute specifies the signing credential that will be used by the SSO handler for requests from this relying party and must match the identifier of the appropriateFileResolver
ID. A separate set of credentials may be specified for the IdP's signing of assertions and SSL session identification with this relying party. An incorrect signing key will lead to trust failures.AAUrl
: Different AAs may be specified for different relying parties using this attribute. It over-rides, is populated, and operates in the same manner as theAAUrl
attribute of the IdPConfig element.defaultAuthMethod
: The value of this attribute represents the mechanism by which the user's authentication was performed. It is used to populateauthenticationMethod
in SAML assertions passed to this relying party if no other authentication method is passed to the HS. For a brief list of authentication methods, consult the same attribute as part of the IdPConfig element.passThruErrors
: This boolean attribute determines whether the IdP will relay errors in flows to this SP for use in displaying these errors to the browser in the case of an unsuccessful transaction.providerId
: If the !IdP must assert under a different name to this relying party, specify aproviderId
attribute which will over-ride the one specified in IdPConfig.signAssertions
: If this boolean attribute has a value oftrue
, all assertions generated for transport to this relying party will be signed. This is mostly useful for using the attribute assertion in contexts outside of the Shibboleth flows and defaults tofalse
.
...
The Shibboleth IdP leverages metadata distributed by relying parties and federations to validate the identity of requesters and the resource providers on whose behalf the request is being made. This metadata is cached locally in the form of metadata.xml
. Shibboleth includes a simple utility called metadatatool
which can be used to refresh a metadata.xml
file. These files are then pointed to by MetadataProvider
elements in idp.xml
and shibboleth.xml
.
The metadatatool
can verify the the metadata's signature if the signing certificate is in a Java keystore. Download the signing certificate (e.g., into inq.pem
), then import it into a keystore using the Java keytool
.
keytool -import -file inq.pem -keystore internet2.jks -alias sitesigner
The following command is appropriate for most deployments and is run from the $SHIB_HOME
directory. This should be frequently run by adding it to a crontab
to ensure that the data is fresh.
bin/metadatatool -i https://wayf.internet2.edu/InQueue/IQ-metadata.xml -k conf/internet2.jks -a sitesigner -p shib123 -a sitesigner -o /your_path_here/IQ-metadata.xml
...