Chat with us, powered by LiveChat

What Is a SAML IdP? Providers, Examples, and 2026 Security Checks

What Is a SAML IdP? Providers, Examples, and 2026 Security Checks

A SAML IdP (identity provider) is the trusted system, such as Okta, Microsoft Entra ID, Google Workspace, or Keycloak, that verifies a user’s identity and sends a digitally signed XML assertion to an app (the service provider), so the app never sees the password. Because every connected app relies on it, the IdP is where MFA, access policy, and certificate trust are managed, and where recent SAML attacks have concentrated.

What is a SAML IdP?

A SAML IdP (identity provider) is the system that verifies who a user is and then sends a digitally signed XML assertion to an application, called the service provider (SP). The user signs in without the app ever handling their password. Okta, Microsoft Entra ID (formerly Azure AD), Google Workspace, and Keycloak are the most widely deployed SAML IdPs.

The protocol is the OASIS SAML 2.0 standard, which OASIS members approved on March 14, 2005. The current US federal baseline for assertions is NIST SP 800-63C-4, finalized July 31, 2025. At its lowest federation level (FAL1), the IdP must sign the assertion with approved cryptography, and the app must validate that signature with the expected IdP’s key.

SAML IdP verdict at a glance

QuestionAnswer
Setup difficultyLow with a managed cloud IdP (import metadata, map attributes). Medium to high when self-hosted (Keycloak, Shibboleth, AD FS). High if you build your own IdP.
Best fitBrowser-based workforce SSO and B2B federation between organizations
Poor fitNative mobile apps and API authorization, where OIDC and OAuth 2.0 fit better
2026 risk realityRecent SAML breaches trace to SP library parsing bugs and exposed IdP appliances, not to the SAML standard itself
Ongoing workSigning certificate rotation, metadata refresh, SAML library patching
Who should read onSaaS developers adding enterprise SSO, IT admins choosing or configuring an IdP, security teams checking exposure

What does a SAML identity provider actually do?

A SAML IdP does six jobs:

  • Authenticates the user. SAML does not prescribe the method, so the IdP can use a password, MFA, a passkey, or a smart card.
  • Holds or connects to the directory, such as Active Directory, LDAP, or its own user store.
  • Builds the assertion. It carries the user identifier (NameID), when and how the user authenticated, attributes such as email and groups, and validity conditions.
  • Signs the assertion with its private key, and can also encrypt it for one specific SP.
  • Publishes metadata: an XML file with the IdP’s entity ID, SSO URL, and public signing certificate.
  • Enforces access policy once for every app: MFA, device checks, and conditional access.

That central position makes the IdP the main target for password attacks. In Verizon’s analysis of SSO provider logs, credential stuffing made up a median of 19% of all daily authentication attempts. It also makes the IdP a single point of failure: if it is down or its certificate expires, every connected app stops accepting logins.

Read the full guide: What Is SAML? How SAML Works, How SAML Is Used, and Where It Breaks

What is the difference between a SAML IdP and an SP?

The IdP proves identity; the SP consumes that proof and grants access.

AspectIdentity Provider (IdP)Service Provider (SP)
RoleAuthenticates the userHosts the app the user wants
Holds credentialsYesNo
Message it sendsSAML Response containing the AssertionAuthnRequest (SP-initiated flows only)
Cryptographic jobSigns, optionally encryptsValidates the signature, optionally decrypts
Key endpointSSO URL (login endpoint)ACS URL (Assertion Consumer Service)
ExamplesOkta, Microsoft Entra ID, Google Workspace, KeycloakSalesforce, Workday, AWS, GitHub, Zendesk

One platform can play both roles. Microsoft Entra ID is usually the IdP, but it can also act as the SP to a third-party SAML 2.0 IdP that holds an on-premises directory, for Microsoft 365 sign-in. Microsoft only supports a limited set of clients in that setup, mainly web clients such as Outlook Web Access and SharePoint Online.

How does SAML IdP login work, step by step?

In the SP-initiated flow, the most common one, login takes six steps:

  1. The user opens the app (SP) without an active session.
  2. The SP creates an AuthnRequest with a unique ID and redirects the browser to the IdP’s SSO URL, usually over HTTP Redirect binding.
  3. The IdP authenticates the user, or reuses an existing IdP session.
  4. The IdP returns a signed SAML Response to the browser.
  5. The browser POSTs the response to the SP’s ACS URL (HTTP POST binding).
  6. The SP validates the response, creates a local session, and sends the user to the originally requested page (RelayState).

Microsoft documents this exact binding pattern for Microsoft Entra ID as a SAML IdP: Redirect for the request, POST for the response.

SAML IdP login flow diagram showing the browser, service provider, and identity provider exchanging an AuthnRequest and a signed SAML Response in six steps

How is IdP-initiated SSO different?

In IdP-initiated SSO the user starts at the IdP portal (for example, the Okta dashboard) and clicks an app tile.

FactorSP-initiatedIdP-initiated
AuthnRequest sentYesNo
Response tied to a request (InResponseTo)YesNo, the response is unsolicited
Replay protectionRequest ID matchingSP must cache assertion IDs and enforce short validity windows
Typical useSaaS apps, bookmarks, deep linksInternal portals, intranet dashboards
Supported in OIDCYesNo equivalent; OIDC flows always start from the app

Explore the topic: SAML vs SSO: Is SAML the Same as Single Sign-On?

What is the SAML IdP login URL?

The login URL is the SingleSignOnService location in the IdP’s metadata. Consoles label it differently: “SSO URL” in Google Workspace, “Login URL” in Microsoft Entra ID, and “Identity Provider Single Sign-On URL” in Okta. Users rarely visit it directly; the SP redirects them there.

What does a SAML identity provider example look like?

Below is a trimmed SAML Response from an IdP, with the fields the SP depends on marked in comments.

Each field blocks a specific attack, but only if the SP checks it:

FieldWhat the SP must checkIf the SP skips it
ds:SignatureThe signature covers the exact assertion the SP readsSignature wrapping: an unsigned assertion is injected beside a signed one
IssuerMatches the trusted IdP’s entity IDAssertions from a rogue IdP are accepted
AudienceEquals the SP’s own entity IDAn assertion issued for another app is replayed against yours
NotBefore / NotOnOrAfterCurrent time is inside the windowCaptured assertions are replayed later
InResponseToMatches the pending AuthnRequest IDUnsolicited responses are injected
Recipient / DestinationMatches the SP’s ACS URLAssertions are forwarded to the wrong endpoint
  • Response vs assertion signing: an IdP can sign the whole Response, the Assertion inside it, or both. Google Workspace, for example, signs only the assertion unless the admin ticks “Signed response”. If your SP expects a signed Response, this default is a common cause of “signature missing” errors.

Continue reading: What Is a SAML Assertion? Structure, Example, and Validation (2026)

What does a real SAML IdP test run show?

We ran an SP-initiated login against Keycloak 26.7.4, the latest release as of September 28, 2026, to check how a real IdP behaves with default settings.

Test setup:

  • Keycloak 26.7.4 in development mode on a local machine
  • One realm (“demo”), one SAML client with entity ID https://app.example.com, and one user (jane.doe) in a “finance” group
  • A minimal Python SP that sends an unsigned AuthnRequest, then verifies the returned signature with the signing certificate from the IdP’s metadata

Screenshot 1: the IdP metadata page

The metadata URL is /realms/{realm}/protocol/saml/descriptor. It lists everything an SP needs to trust the IdP.

Keycloak SAML IdP metadata page showing the entityID, WantAuthnRequestsSigned setting, signing certificate, and SingleSignOnService endpoints

File name: keycloak-saml-idp-metadata-screenshot.webp 

Screenshot 2: the decoded SAML Response

The SP decoded the Base64 SAMLResponse and ran eight checks. All eight passed, including signature verification.

Decoded SAML Response from a Keycloak SAML IdP showing a signed assertion, NameID, audience, validity window, attributes, and passing SP validation checks

What the test run found

ObservationValue in this runWhat it means
SignaturesResponse and Assertion both signed, RSA-SHA256 with SHA-256 digestSPs that require either signature work without extra IdP changes
Assertion validity (Conditions)60 secondsSP and IdP clocks must agree within that window; use NTP on both
SubjectConfirmationData NotOnOrAfter5 minutes after NotBeforeThe browser POST must reach the ACS URL within 5 minutes
SessionNotOnOrAfter10 hoursAn SP session set longer than 10 hours outlives the IdP session
Unrequested attributes6 Role attributes from Keycloak’s default role_list scopeRemove that scope from the client to send only what the app needs
Request signingMetadata says WantAuthnRequestsSigned=”true”, yet the unsigned AuthnRequest was acceptedMetadata does not prove enforcement; check the client’s “Client signature required” setting

The last two rows are the practical lesson: default IdP settings can over-share attributes and silently accept unsigned requests, so review each SAML app’s settings instead of relying on metadata.

Which SAML IdP providers can you choose from in 2026?

This SAML identity providers list is grouped by deployment model, because hosting decides cost, control, and who patches the IdP.

ProviderCategoryHostingOpen sourceTypical fit
Okta Workforce IdentityCloud workforce IdPSaaSNoMixed SaaS estates, large app catalogs
Microsoft Entra IDCloud workforce IdPSaaSNoMicrosoft 365 organizations
Google WorkspaceCloud workforce IdPSaaSNoGoogle-first organizations
PingOne / PingFederateCloud and self-managedSaaS or on-premNoRegulated enterprises, complex federation
OneLoginCloud workforce IdPSaaSNoMid-market SSO
Cisco DuoCloud IdP or IdP proxySaaSNoAdding MFA in front of an existing IdP
Microsoft AD FSOn-prem federationWindows ServerNoLegacy Active Directory estates
KeycloakSelf-hosted IdPYour infrastructureYesFull control, no license cost
Shibboleth IdPSelf-hosted IdPYour infrastructureYesHigher-education and research federations
SimpleSAMLphpSelf-hosted IdP or SPYour infrastructureYesPHP environments, light federation
NetScaler ADC / GatewayNetwork appliance IdPAppliance or VPXNoSites already using NetScaler for remote access

For a neutral interoperability check, GitHub officially supports and internally tests six SAML IdPs: AD FS, Microsoft Entra ID, Okta, OneLogin, PingOne, and Shibboleth. Microsoft keeps a similar federation compatibility list for third-party IdPs used with Entra ID.

How do you choose a SAML IdP?

Your situationStrongest starting optionMain trade-off
Already on Microsoft 365Microsoft Entra IDAdvanced conditional access needs higher license tiers
Already on Google WorkspaceGoogle WorkspaceFewer policy controls than dedicated IAM platforms
100+ SaaS apps from many vendorsOkta or PingPer-user subscription cost
Data must stay on your infrastructureKeycloak or ShibbolethYou own patching, uptime, and scaling
University or research federationShibbolethSteeper configuration learning curve
Need MFA in front of a legacy IdPDuo as an IdP proxyA second component to operate
NetScaler already handles remote accessNetScaler as IdP only with strict patchingRepeated 2026 CVEs in the SAML IdP role (see the Citrix section)

Five questions to settle before you buy or deploy:

  1. Does the IdP support both SP- and IdP-initiated SSO for your apps?
  2. Can it run two signing certificates at once for zero-downtime rotation?
  3. Does it also provision users (SCIM), or only sign them in?
  4. Can it encrypt assertions for SPs that require it, such as AWS IAM?
  5. Who patches it, and how fast? For self-hosted and appliance IdPs, that is you.

What is a SAML IdP app, and how do you create one?

A SAML IdP app is the SP’s registration inside the IdP. It stores three things the IdP needs: the SP’s entity ID, its ACS URL, and the attributes to send.

IdPWhat it calls the SAML appWhere the SP’s details go
OktaSAML app integration“Single sign-on URL” and “Audience URI (SP Entity ID)”
Microsoft Entra IDEnterprise application (non-gallery)“Reply URL (ACS URL)” and “Identifier (Entity ID)”
Google WorkspaceCustom SAML app“ACS URL” and “Entity ID”
KeycloakClient, type SAML“Client ID” (the SP entity ID) and “Valid redirect URIs”

Example: creating a custom SAML app in Google Workspace

Google Workspace has preintegrated SSO for over 200 cloud apps. For anything else, you add a custom SAML app:

  1. In the Admin console, open Apps, then Web and mobile apps, then Add app, then Add custom SAML app. Super administrator rights are required.
  2. Download the IdP metadata, or copy the SSO URL and Entity ID and download the certificate. Enter them in the SP’s SSO settings.
  3. Enter the SP’s ACS URL (must start with https://), its Entity ID, and an optional Start URL, which sets RelayState.
  4. Map attributes. Group membership can include up to 75 groups, and the response only lists groups the user belongs to.
  5. Turn the app on for the right organizational units under User access.

In Keycloak, the same object is a client. In Keycloak 19 or later, you set the client type to SAML, use the SP’s entity URL as the Client ID, and turn on assertion signing.

How do you set up a SAML provider in AWS?

In AWS, the IdP connection is an IAM SAML identity provider: an IAM entity that describes your external IdP and serves as the principal in role trust policies. After creating it, you create one or more IAM roles that federated users assume (IAM SAML provider guide).

The IdP must send these attributes, with the names typed exactly (they are case-sensitive):

Attribute nameRequiredRule
https://aws.amazon.com/SAML/Attributes/RoleYesAt least one comma-separated pair of role ARN and SAML provider ARN; several pairs make the user pick a role at console sign-in
https://aws.amazon.com/SAML/Attributes/RoleSessionNameYes2 to 64 characters, no spaces; use a user ID or email, not a display name
https://aws.amazon.com/SAML/Attributes/SessionDurationNo900 to 43,200 seconds (15 minutes to 12 hours); the default is 1 hour
https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}NoPasses session tags for attribute-based access control

Source: AWS SAML assertion requirements.

These rules cause most failed AWS setups:

RuleDetail
Metadata fileUTF-8 without a byte order mark; the X.509 certificate needs a key of at least 1024 bits and no repeated extensions
Subject confirmationExactly one SubjectConfirmation element, with NotOnOrAfter and a Recipient that matches the AWS sign-in endpoint
Encrypted assertionsSupported by IAM since February 5, 2025 (AWS announcement). The ACS URL then changes to https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID, using the ID on the provider’s detail page
Encryption limitsIAM Identity Center and Amazon Cognito do not accept encrypted assertions from IAM SAML providers (AWS SAML 2.0 federation)
Key limitA provider holds at most two private keys, which gives one rotation slot
Missing Role attributeAWS returns “Response does not contain the required audience” (IAM SAML troubleshooting)

If you manage many AWS accounts, IAM Identity Center is AWS’s multi-account option. It accepts an external SAML IdP, but not encrypted assertions, so pick one approach per account set.

Is it safe to use Citrix NetScaler as a SAML IdP?

Only on a current build: NetScaler’s SAML IdP role has had two exploited memory-leak flaws in 2026, and both only affect appliances configured as a SAML IdP.

DisclosedCVESeverityStatusFixed builds (Citrix bulletin)
June 30, 2026CVE-2026-8451HighExploited in the wild; alert issued by the Canadian Centre for Cyber Security14.1-72.61, 13.1-63.18, and FIPS equivalents 
March 23, 2026CVE-2026-3055Critical, CVSS v4.0 9.3Exploited; listed in CISA’s Known Exploited Vulnerabilities catalog14.1-60.58, 14.1-66.59, 13.1-62.23, 13.1-FIPS/NDcPP 13.1-37.262 

Both flaws are pre-authentication memory overreads: a malformed SAML request makes the appliance return memory that can hold session tokens and credentials. FortiGuard sensors recorded more than 2,000 blocked CVE-2026-3055 attempts per day, peaking above 2,700, mainly against Germany, Hong Kong, France, the United States, and Poland.

Edge appliances are a growing target in general. In Verizon’s 2025 DBIR, edge devices and VPNs were 22% of vulnerability-exploitation targets, up from 3%, and only about 54% of those flaws were fully patched.

NetScaler SAML IdP checklist:

  1. Search the configuration for add authentication samlIdPProfile. A match means the appliance is exposed to both CVEs.
  2. Upgrade to 14.1-72.61 or 13.1-63.18 or later. These builds are past the fixes for both CVEs.
  3. After patching, end active AAA sessions and rotate the SAML signing certificate, because leaked memory may have exposed tokens.
  4. Citrix-managed cloud services and Citrix-managed Adaptive Authentication are patched by Citrix; the bulletins apply to customer-managed appliances only.

Find out more: What Is SAML Authentication? How It Works, With Examples

Which SAML IdP from GitHub or npm is safe for testing?

Use Keycloak for realistic tests and keep the lightweight Node and Docker IdPs strictly local: most “saml idp github” and “saml idp npm” results are unmaintained test tools.

ToolTypeStatus (checked September 2026)Use it for
mcguinness/saml-idp (npm saml-idp)Node.js test IdPLast push July 25, 2023; 472 stars, 177 forks; depends on the legacy xmldom 0.1.x lineLocal SP testing only
nccgroup/saml-idpFork of the aboveREADME says it is not for productionLocal SP testing only
kristophjunge/test-saml-idpDocker, SimpleSAMLphp 1.15.2Last updated about 8 years ago; ships static credentials and SSL keysAvoid for new projects
samlifynpm library to build an IdP or SPVersions before 2.10.0 have CVE-2025-47949, a signature wrapping flawProduction code, pinned to 2.10.0 or later
KeycloakFull open-source IdPActively releasedIntegration and staging tests

The mcguinness tool’s own author describes it as a simulator that is “insecure by design”: it mints whatever assertion you type, with no real authentication.

Three rules for test IdPs:

  1. Never let a production SP trust a test IdP’s certificate. Anyone running the tool can mint an assertion for any user.
  2. Generate a fresh key pair. Public forks of these repos commit their idp-private-key.pem files, so reused keys are effectively public.
  3. Never expose a test IdP to the internet; bind it to localhost or a private network.

Which SAML vulnerabilities hit IdPs and SPs in 2025 and 2026?

Most SAML library flaws of the past two years share one root cause: the code verifies the signature on one XML element but reads the user’s identity from another. The NetScaler IdP flaws are covered in the Citrix section above.

DateComponentCVEImpactFixed in
Dec 2025php-saml, xmlseclibsResearch disclosureVulnerable to a canonicalization exploit; the XMLSec Library and Shibboleth xmlsectool were notVendor-specific
Dec 2025ruby-saml (SP library)CVE-2025-66567, CVE-2025-66568Authentication bypass up to 1.12.4, from an incomplete earlier fix1.18.0
2025samlify (Node.js)CVE-2025-47949Signature wrapping (see the test IdP table)2.10.0
Mar 2025ruby-samlCVE-2025-25291, CVE-2025-25292One valid signature from the target’s key let an attacker forge assertions and log in as any user 1.12.4 or 1.18.0

Attackers do not always need to intercept a login. PortSwigger found that valid IdP-signed XML documents are often publicly available and can be repurposed for these attacks.

Hardening steps for SAML libraries:

  • Put SAML libraries under automated dependency alerts and patch them as fast as the login page itself.
  • Reject any response containing more than one assertion.
  • Read identity only from the element the verified signature references.
  • Prefer libraries built on the XMLSec Library or on implementations not affected by the research above.
  • Re-test after upgrades: ruby-saml’s December 2025 CVEs came from an incomplete fix for the March 2025 ones.

SAML vs OAuth vs OIDC: which one does your app need?

SAML and OIDC are sign-in (authentication) protocols; OAuth 2.0 on its own is not. It grants an app access to an API on a user’s behalf.

FactorSAML 2.0OAuth 2.0OpenID Connect (OIDC)
PurposeAuthentication and federationDelegated authorizationAuthentication built on OAuth 2.0
TokenSigned XML assertionAccess token (format not fixed)ID token (JWT) plus access token
Uses an “IdP”YesNo (uses an authorization server)Yes (the OpenID Provider)
IdP-initiated loginYesNot applicableNo
Best fitEnterprise web SSO, B2B federationAPI access for apps and agentsModern web, mobile, and single-page app login
Mobile and API fitLowHighHigh

NIST SP 800-63C-4 treats the two sign-in protocols as equivalent federation options, naming both the OIDC ID token and the SAML assertion as example assertions. Many organizations run SAML for established enterprise apps and OIDC for newer ones, often from the same IdP.

Learn more here: SAML vs OAuth: What Is the Difference and Which Should You Use in 2026?

How do you fix the most common SAML IdP errors?

Decode the SAML Response first (browser developer tools or a SAML tracer extension), then match the symptom:

SymptomLikely causeFix
“Invalid signature” after months of working SSOIdP signing certificate rotated or expiredRe-import IdP metadata; run old and new certificates side by side during rotation
“Signature missing”SP expects a signed Response, IdP signs only the AssertionTurn on Response signing in the IdP, or relax the SP setting
“Assertion expired” or “not yet valid”Clock drift between IdP and SP serversSync both with NTP; keep the SP’s skew tolerance to a few minutes
“Audience mismatch”SP entity ID typed wrong in the IdP appCopy the entity ID exactly from the SP’s metadata
Login works, but roles or groups are missingAttribute names differ (for example mail vs email)Align attribute names with the SP’s documentation
“InResponseTo mismatch”IdP-initiated response sent to an SP-initiated-only app, or a stale requestEnable IdP-initiated support on the SP, or start login from the SP

How do you rotate a SAML signing certificate without an outage?

Microsoft Entra ID shows the pattern clearly (Microsoft certificate management tutorial):

  • New signing certificates default to a 3-year lifetime.
  • Entra ID emails expiry warnings 60, 30, and 7 days ahead, to up to five addresses; add a team distribution list.
  • Create the new certificate with an overlapping date, upload it to the SP, then activate it.
  • An SP that never checks certificate expiry keeps accepting an expired certificate. This hides the problem until the IdP switches certificates and logins suddenly fail.

Frequently Asked Questions (FAQs)

Is Okta a SAML IdP?

Yes. Okta acts as a SAML IdP for thousands of apps, and it can also act as an SP when federating to another organization’s IdP.

Is SAML still used in 2026?

Yes. AWS added encrypted-assertion support to IAM in 2025, and GitHub, Microsoft 365, and Google Workspace all support SAML SSO. New cloud-native apps often default to OIDC, so most organizations run both.

Where do I find my IdP’s SAML metadata URL?

  • Keycloak: https://<host>/realms/<realm>/protocol/saml/descriptor
  • Microsoft Entra ID: “App Federation Metadata Url” in the app’s SAML single sign-on settings
  • Google Workspace: “Download IdP metadata” when creating the custom SAML app
  • Okta: “Metadata URL” on the app’s Sign On tab

Do SAML assertions need to be encrypted?

Signing is mandatory; encryption is optional. Encryption hides assertion contents from the browser and is worth enabling when assertions carry sensitive attributes, and the SP supports it.

How long does a SAML session last?

The SP decides, not the assertion. GitHub Enterprise Server, for example, keeps a SAML session active for 24 hours before sending the user back to the IdP, and AWS console sessions last 15 minutes to 12 hours depending on the SessionDuration attribute.

Share: Facebook LinkedIn X
C Cade Miller

Cade Miller is an active Cybersecurity Consultant and technical contributor at Dumpsgate, specializing in cloud security architecture, identity and access management (IAM), and proactive threat detection. Moving beyond theoretical security concepts, Cade draws directly from his ongoing fieldwork and Security Operations (SecOps) experience to deliver highly actionable, research-backed insights. Dedicated to continuous hands-on testing, he regularly evaluates emerging defensive technologies and pursues advanced industry certifications, translating his firsthand experience into battle-tested exam strategies and practical security blueprints for IT professionals.

GDPR