Skip to main content

Success response

A successful response contains one Assertion. FaceSign signs the root Response and the nested Assertion separately. This sample is abridged and uses synthetic values:

Released attributes

NameID behavior

By default, success uses a transient facesign-session:<sessionId> NameID. An approved isolated sandbox may echo the Subject NameID supplied by Bridge. That echo is correlation data from the unsigned request, not FaceSign proof of the workforce identity.

Denial response

A completed non-pass or analysis failure may return a signed denial. It has no Assertion, NameID, or attributes. Only the root Response is signed.

Signature profile

The deployed build emits RSA-SHA256 signatures, SHA-256 digests, and exclusive XML canonicalization. On success, it signs the root Response and nested Assertion separately. On denial, it signs only the root Response; there is no Assertion. Trust the current X.509 certificate from the live metadata. Do not pin a certificate copied from an example or sample response. Incoming AuthnRequests remain unsigned; if Bridge requires signing, record that incompatibility before UAT.

Validation checklist

1

Read Status first

Continue only when the top-level status is Success. Reject any non-success as a login and reject a non-success response that contains an Assertion.
2

Validate the required signatures

On success, validate the root Response signature and the nested Assertion signature against the certificate in FaceSign metadata. On denial, validate the root Response signature.
3

Correlate the request

Match InResponseTo on the Response and bearer confirmation data to an outstanding request.
4

Check where and when it applies

Validate Destination, Recipient, Audience, NotBefore, and both NotOnOrAfter values. Apply Silverfort’s documented clock-skew policy.
5

Reject duplicates durably

Store accepted Response and Assertion IDs in a durable duplicate store and reject reuse.
6

Validate RelayState separately

Use RelayState only to resume application state. It is not identity or authentication evidence.

Replay responsibilities

InResponseTo provides correlation, but it does not by itself prevent replay. The deployed IdP does not reject a repeated AuthnRequest ID on Silverfort’s behalf. Silverfort must durably reject duplicate Response and Assertion IDs and consume each outstanding request once.

Fallback semantics

A signed Responder/AuthnFailed is an authenticated non-success. A pre-flow HTTP error and an unreachable or late flow may produce no usable SAML response. Silverfort owns the fallback for each case. None may be converted to Success or treated as a valid step-up.