- The exact, case-sensitive SP entityID.
- The exact HTTPS Assertion Consumer Service (ACS) URL that accepts HTTP-POST responses.
Open FaceSign IdP metadata
Import the live entityID, signing certificate, SSO bindings, and transient NameID format. Live
metadata is authoritative for the current signing certificate.
Configuration at a glance
FaceSign registers the entityID and HTTPS ACS exactly as supplied. If the request includes
AssertionConsumerServiceURL, it must match that ACS. The metadata publishes Redirect and POST
SSO endpoints, but responses always use HTTP-POST. For certificate rollover, notification timing
and metadata re-import behavior must be agreed during onboarding or UAT.
Supported AuthnRequest profile
The deployed IdP accepts HTTP-Redirect and HTTP-POST requests with these rules:
The replay reservation is scoped to the exact SP entityID and request ID. It is an inbound guard.
The receiving SP still owns durable Response and Assertion replay rejection.
Duplicate
SAMLRequest, RelayState, or login_hint fields return HTTP 400 invalid_request,
even when the repeated values agree. FaceSign never accepts login_hint from a POST URL or combines
it with a form hint.
The IdP rejects signed AuthnRequests. That includes an embedded XML signature and Redirect or POST
signature parameters. If the service provider cannot disable request signing, it is incompatible
with the deployed profile.
NameID and correlation input
For a registration without correlation Attribute mappings, a request with no approved correlation input returns a transient, session-scoped NameID. OmitNameIDPolicy, or request transient or
unspecified.
With approved sandbox correlation echo, the effective identifier can come from either an XML
Subject NameID or, when separately enabled for that exact SP, login_hint. FaceSign trims
surrounding whitespace, preserves case, and applies the same validation to both sources: the value
must be nonempty after trimming, contain no control, invisible, or nonstandard whitespace
characters, and contain no more than 256 UTF-16 code units. FaceSign does not Unicode-normalize or
decode the value a second time.
For Subject input, use an advertised email, persistent, Windows-domain, Kerberos, or unspecified
format, or omit Format. Transient is not accepted. The returned NameID format is the Subject format,
or SAML 1.1 unspecified when the Subject omits it. For hint-only input, a supported concrete
NameIDPolicy format selects the returned NameID format. An omitted or unspecified policy returns
canonical SAML 1.1 unspecified. If both inputs are present, their trimmed values must agree;
FaceSign then preserves the Subject value and format. A disagreement returns HTTP 400
invalid_request.
NameIDPolicy may be omitted, request unspecified, or exactly match a supported returned NameID
format. Transient and unknown formats remain invalid for caller-supplied correlation input.
SPNameQualifier on NameIDPolicy is not supported.
For one exact registered sandbox SP, FaceSign can separately configure a bounded list of one or
two correlation Attributes. Each mapping records an exact Attribute Name and exact
NameFormat behavior: SAML’s standard uri, basic, or unspecified NameFormat URI, or an
explicit agreement to omit NameFormat. Names must be unique. Under the uri NameFormat, the
Attribute Name must itself be an absolute URI. On a successful assertion with an effective
identifier, every configured Attribute repeats the same value as the returned NameID. The mechanism
remains inactive until that exact per-SP list is configured. Once it is configured, a request with
neither Subject nor an approved nonempty login_hint is rejected before a FaceSign session starts.
The FaceSign-owned live loopback is already configured with the reserved .invalid synthetic
Subject loopback.user@example.invalid, NameID Format
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress, and the following two Attributes in
FaceSign’s durable default correlation profile, both using
SAML Attribute NameFormat
urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/namehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
login_hint compatibility extension requires its own exact-SP opt-in in
addition to the echo policy. A nonempty
Subject or hint without the applicable opt-in returns subject_echo_disabled. An empty or
whitespace-only hint counts as absent. Before enabling
echo, agree on a synthetic value such as test.user@example.invalid, the accepted input source,
and the expected returned NameID. If the SP reads response Attributes, also agree on the exact
one-or-two-item list of Attribute Name and NameFormat behaviors. Omit NameFormat only by
explicit agreement. FaceSign emits no correlation Attributes until that exact per-SP list is
configured. Never place a real workforce identifier in a public fixture.
Synthetic HTTP-Redirect example
This template shows where the hint belongs:IssueInstant. Its SP and ACS are deliberately synthetic and unregistered. Replace them only
after FaceSign confirms your exact registration.
SAMLRequest, optional RelayState, and optional login_hint in the form body.
Do not put login_hint on the POST URL. URL and form decoding treat + as a space, so encode a
literal plus sign as %2B (for example, test%2Buat%40example.invalid). URLSearchParams performs
that encoding in the example above.
RequestedAuthnContext
OmitRequestedAuthnContext, or send exactly one container with Comparison="exact" and exactly
one class reference:
Unsupported features
- Signed AuthnRequests.
AssertionConsumerServiceIndex.- IdP-initiated SSO.
- SLO and
SingleLogoutService. - HTTP-Artifact and artifact resolution.
- Encrypted Assertions, encrypted NameIDs, and
EncryptedID. - Interactive requests with
IsPassive="true"orIsPassive="1". SPNameQualifieronNameIDPolicy.- Any
RequestedAuthnContextother than the exact fixed class described above.