Multi-SSO (SAML 2.0) errors and fixes

A list of common errors and associated fixes for a Multi-SSO (SAML 2.0) setup and configuration.

Table 1. Errors during Multi-SSO (SAML 2.0) setup
Error in instance logs Test Connection Message SAML property Diagnosis Fix
NotAfter: <Thu Jun 05 22:57:44 PDT 2014>. Ensure that the IDP x509 certificate is present, valid, and active. N/A The current certificate or the SAML assertion has expired.
  • Sync the SNC clock with the SAML IdP server clock.
  • Update the SAML 2.0 certificate record.
  • Unable to locate SAML 2.0 certificate.
  • Could not find a digital signature stored in the ServiceNow instance.
Ensure that the IDP x509 certificate is present, valid, and active The PEM-formatted string should be entered into the PEM Certificate field. The SAML certificate does not exist. It might be inactive.
  • Ensure that the correct PEM-formatted certificate is uploaded to the instance.
  • Verify that the certificate has the name SAML 2.0. No other names are allowed.
    Note: This naming convention is only applicable for the SAML2 update 1 plugin.
Certificates do not match. Expect: <certStr>, actual: <inboundCert>. Ensure that the IDP x509 certificate is present, valid, and active. N/A The available certificate in SNC does not match the certificate in assertion. Causes include:
  • The certificate is updated on the IdP but not in the ServiceNow instance.
  • The certificate is in the wrong format.
Confirm that the PEM-formatted string in the SAML 2.0 certificate record matches the X509 Certificate in the SAMLResponse for the user IdP.
Failure to check the validity of the certificate. Ensure that the IDP x509 certificate is present, valid, and active N/A The current certificate might have expired. Update the SAML 2.0 certificate record.
Failure to validate signature profile. Ensure that the IDP x509 certificate is present, valid, and active. N/A The assertion might be signed with a different certificate. Check if the IdP has the same certificate as the SNC instance.
InResponseTo attribute in SubjectConfirmationData mismatch. Expect: <inResponseTo>, actual: <inResponseTo>. Subject confirmation validation failed. N/A This error appears if either of the following situations occurs:
  • The IdP returns a SAMLResponse for a different SAMLRequest
  • A user bookmarks the URL with the SAMLRequest instead of just the instance URL
  • If a null value is expected, the response might be sent to a different node when the instance has multiple nodes.
The IdP admin should confirm that the expected SAMLReponse is being returned. This situation can be a load balancer or infrastructure issue.
SessionIndex value not found: <message>... SessionIndex not valid. N/A The SessionIndex is required in the SNC instance. The IdP returns it in the SAML response to authenticate successfully.

The IdP admin should confirm that the SessionIndex is defined in the SAMLResponse.

No valid SubjectConfirmation found. Subject confirmation validation failed. N/A Conditions could be missing due to an error on the IdP.

The StatusCode in the response would contain Responder instead of the expected Success.

Review SAMLResponse to determine if Conditions are included in the SAMLResponse.

The valid subject confirmation data could be expired or not for the right audience.

Assertion audience mismatch. Expect: <propAudience>, actual: <audienceUri>.

or

AudienceRestriction validation failed. No matching audience found.

Ensure that the 'Audience URI' field is set correctly The audience URI that accepts the SAML2 token. (Normally, it is your instance URI. For example: https://demo.service-now.com.) The SNC instance configured audience URI must match the value in the IdP. Locate <saml2:Audience> in the SAMLResponse in the logs and verify that the value matches the one on the instance.
Assertion issuer is invalid. Expect: <value on instance>, actual: <value returned by IdP> Assertion issuer is invalid. The Identity Provider URL that issues the SAML2 security token with user info. The IdP entity id (issuer) does not match the value defined in the SNC instance.
  • Check if IdP or SP is not configured properly.
  • Confirm that the SAML property (the Identity Provider URL that issues the SAML2 security token with user info) is set correctly.

Subject is valid in the future. Now: <now>, NotBefore: <notBefore>

or

Subject is expired. Now: <now>, NotOnOrAfter: <notOnOrAfter>

Subject validation confirmation failed. The number in seconds before notBefore constraint, or after notOnOrAfter constraint, to consider still valid. The IdP clock is not synced with SP clock. Update the SAML property glide.authenticate.sso.saml2.clockskew to a larger value. The default is 180 seconds. Some cases require a setting of 300 or higher. You may also need to check the time on your IdP server.

Assertion is valid in the future, now: <now>, notBefore: <notBefore>

or

Assertion is expired, now: <now>, notOnOrAfter: <notOnOrAfter>

Assertion is invalid. The number in seconds before notBefore constraint, or after notOnOrAfter constraint, to consider still valid. IdP clock is not synced with SP clock

Update the SAML property to a larger value. Default of 60 seconds. Some cases require a setting of 300 or higher. You may also need to check the time on your IdP server.

Table 2. Common login and IdP errors
Error or Symptom Diagnosis Fix
Login requests generate an infinite loop between the system and the IdP when High Security is active.
  • Typically the URL endpoint is an error page or logout page.
  • The logout_redirect.do might create this loop when you define glide.security.url.whitelist without adding the IdP host name to the property value.
Set (or create) the system property glide.authenticate.failed_redirect to redirect failed authentication requests to this URL.
The token used to authenticate the user or the request is signed with the signature algorithm http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 which is not the expected signature algorithm http://www.w3.org/2000/09/xmldsig#rsa-sha1. Check the Alert Context tab for event details. Navigate to the Advanced tab of the Relying Party Trust configuration dialog and verify that the algorithm is set to SHA-1 and not SHA-256.