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 transientfacesign-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 signedResponder/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.