Skip to content

Add "SAML 2.0 Concepts" documentation and update SAML-related configuration and endpoint references.#1041

Open
maartenba wants to merge 1 commit intomainfrom
mb/saml-concepts
Open

Add "SAML 2.0 Concepts" documentation and update SAML-related configuration and endpoint references.#1041
maartenba wants to merge 1 commit intomainfrom
mb/saml-concepts

Conversation

@maartenba
Copy link
Member

@maartenba maartenba commented Mar 23, 2026

@bhazen would you mind a quick pass?

@maartenba maartenba self-assigned this Mar 23, 2026
@maartenba maartenba added the documentation Improvements or additions to documentation label Mar 23, 2026
@maartenba maartenba requested a review from bhazen March 24, 2026 09:28
@maartenba maartenba marked this pull request as ready for review March 24, 2026 09:28
Copy link
Contributor

@bhazen bhazen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One general comment on a section and one FYI


## Assertions

An assertion is the central data structure in SAML. It is a digitally signed XML document that carries claims about a user from the Identity Provider to the Service Provider. Think of it as the SAML equivalent of a JWT in OpenID Connect — everything else in the protocol exists to produce, transport, and validate assertions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While it is best practice to sign either the assertion, the response, or both they are not always signed. The assertion is only part of the XML document. It's probably more accurate to say the Assertion carries attributes.

It's more accurate to say it is the equivalent of an ID token in OpenID Connect. JWT here to some may imply JWT Bearer/access token and assertions are not that - they're a form of an identity assertion.

* **Attribute Statement**: carries user properties such as email address, roles, group memberships, and department.
* **Conditions**: constrain where and when the assertion is valid. `NotBefore` and `NotOnOrAfter` define a time window (typically minutes), and `AudienceRestriction` limits which recipients can accept it.

The Identity Provider signs the assertion with its private key. The Service Provider validates the signature before trusting any claims inside. IdentityServer builds assertions automatically when it processes a SAML sign-in request. You control what attributes appear in assertions via claim mappings — see [`SamlOptions.DefaultClaimMappings` and `SamlServiceProvider.ClaimMappings`](/identityserver/saml/configuration.md#default-claim-mappings). The signing behavior is configured via the [`SamlSigningBehavior` enum](/identityserver/saml/configuration.md#samlsigningbehavior).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI: the claims mapping will potentially change as we're still doing some API review on this work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants