What Is SAML (Basic) in Okta?

What Is SAML (Basic) in Okta?

A plain-English guide to how Okta uses SAML 2.0 to sign people into apps with one login: the pieces, the flow, the setup, the security rules, and the mistakes that trip up beginners.

Every morning, millions of people open a laptop, click a tile named Salesforce, Slack, Zoom or Workday, and land inside the app without typing a single password. It feels like magic. It is really a carefully planned conversation between two computer systems, and one of the most common languages for that conversation is called SAML.

Okta is a company that sells an identity service. Its job is to know who people are and to vouch for them to other apps. When Okta vouches for a person using SAML, the setup inside Okta is called a SAML 2.0 app integration. The simple, everyday version of that setup is what people usually mean by “SAML (Basic)” in Okta. This guide starts from zero, explains every new word the first time it appears, and walks through the whole picture: what it is, why it exists, how a login actually travels across the internet, how to set it up, how to keep it safe, and how to fix it when it breaks.

1What Is SAML and Why Does It Exist?

Before we talk about Okta, we need the core idea: one trusted place proves who you are, and many apps believe it.

The problem SAML solves

Imagine a company with 60 different work apps. Without any shared login system, every app keeps its own list of usernames and passwords. Each employee must remember 60 passwords, or reuse the same one everywhere, which is dangerous. When someone forgets a password, the help desk gets a ticket. When someone leaves the company, an administrator must remember to remove that person from all 60 apps, one by one. If even one app is forgotten, a former employee may still be able to log in.

This pain has a name: password fatigue. It costs time, creates security holes, and makes onboarding and offboarding slow. The cure is single sign-on, usually shortened to SSO. With SSO, a person proves who they are once to one trusted system, and every connected app accepts that proof.

What SAML is

SAML stands for Security Assertion Markup Language. It is an open standard, which means it is a published set of rules that any company can follow so that different products can work together. SAML defines how one system can send a signed message to another system saying, “This person has been checked, and here is who they are.”

The word “markup language” means the message is written in XML, a text format that uses tags, similar to the way a web page uses HTML tags. People rarely read these messages by hand, but knowing they are structured text helps later when we talk about signatures and debugging.

Analogy

Think of an international airport. You do not prove your identity to the airline, the shop, and the lounge separately. A government issues you a passport once. Every desk in the airport trusts the passport because it carries an official stamp that is hard to forge. SAML works the same way. Okta plays the government that issues the proof, and each app plays a desk that checks the stamp.

A short history

The standards group OASIS published SAML 1.0 in 2002 and a small update, 1.1, in 2003. SAML 2.0 was approved in 2005 and merged ideas from several earlier efforts. That version is the one used almost everywhere today, and it is the version Okta supports for app sign-in. Okta itself was founded in 2009, and SAML was already one of the main ways enterprise software connected to identity services.

2005
Year SAML 2.0 became an OASIS standard
1 login
Opens many apps after one proof of identity
3 players
The person, the app, and the identity provider
i
Good to know

SAML answers one question: “Who is this person?” That is called authentication. It does not by itself decide what the person is allowed to do inside the app. The app decides that, often using extra facts that SAML carries along, such as a group name.

2What Does “SAML (Basic)” Mean in Okta?

Okta does not sell a product literally called “SAML (Basic)”. The phrase is a friendly label for the standard, core way of connecting an app with SAML 2.0.

Inside the Okta Admin Console, an administrator adds an app by choosing Applications, then Create App Integration, and then picking a sign-in method. One of the choices is SAML 2.0. Once chosen, a short guided wizard asks for a handful of settings. The core settings are the web address where the app receives logins, the app’s unique name, the format of the user identifier, and any extra facts to send. When someone says “basic SAML in Okta”, they usually mean this core setup with those core settings.

Okta also offers more advanced options on the same screens. Examples are encrypting the message, enabling single logout, changing the signing algorithm, and setting special authentication context rules. You can use all of those later. A beginner can build a fully working SSO connection without touching any of them.

Two ways to add a SAML app

There are two paths, and both end with the same kind of SAML connection.

Path A

Pick from the catalog

Okta keeps a big catalog called the Okta Integration Network, or OIN, with thousands of pre-built app connections. For a popular app such as Salesforce or Zoom, the connection is mostly ready, and the admin only fills in a few app-specific values.

Path B

Build a custom SAML app

If an app is not in the catalog, such as a tool your own team built, the admin uses the app integration wizard to create a custom SAML 2.0 connection. Every value is typed in by hand, which makes it a great way to learn how everything fits.

SAML compared with other sign-in methods in Okta

SAML is not the only option. The right choice depends on what the app supports.

MethodWhat it doesTypical useDoes the app see the password?
SAML 2.0Okta sends a signed identity message to the appEnterprise and business web appsNo
OIDC (OpenID Connect)Okta sends a signed token built on OAuth 2.0Modern web, mobile and single-page appsNo
SWA (Secure Web Authentication)Okta stores the login and fills in the app’s login form for youOlder apps that support no standardYes, Okta types it in
Analogy

SWA is like a helpful butler who memorizes every password and types it at each door for you. SAML is more like a sealed, stamped letter from a trusted office. The door never learns your password. It only reads the letter and checks the stamp. That is why SAML is considered the cleaner and safer choice whenever an app supports it.

i
Screen names

Okta has two generations of its admin screens, often called Classic Engine and Identity Engine. Menu names and button labels differ slightly between them, but the SAML ideas in this guide are the same in both.

3Core Vocabulary You Must Know

SAML comes with its own small dictionary. Learn these twelve words and the rest of the topic becomes much easier.

Role

Identity Provider (IdP)

The system that knows who people are and vouches for them. In this guide it is Okta. Think of it as the passport office.

Role

Service Provider (SP)

The app the person wants to use, such as Slack or Zoom. It relies on the IdP to confirm identity. Think of it as the airport desk that checks the passport.

Message

Assertion

The signed statement from the IdP about the person. It says who they are, when they logged in, and a few facts such as email or group. It is the passport itself.

Address

ACS URL

Short for Assertion Consumer Service URL. It is the web address on the app that receives the assertion. In Okta’s wizard it is called the Single sign-on URL. Think of it as the mailbox where the letter must be delivered.

Identity

Audience URI / Entity ID

The unique name of the app, written as a URL-style string. Okta stamps it into the assertion so the letter is addressed to one specific app and no other. In the wizard it is labeled Audience URI (SP Entity ID).

Identity

Issuer

The unique name of the IdP. For an Okta app it usually starts with http://www.okta.com/ followed by a unique ID. The app checks that the letter really came from the sender it expects.

Identifier

Name ID

The main identifier for the person inside the assertion, often their email address. The app uses it to find the matching account.

Facts

Attribute Statements

Extra facts about the person, such as first name, last name, department, or job title. Think of them as the lines printed on a name badge.

Context

RelayState

A small note carried along so that after login the person lands on the right page inside the app, such as a specific report, instead of the home page.

Setup

Metadata

A file that describes a SAML party: its addresses, names and certificate. Exchanging metadata saves a lot of copy and paste work and avoids typing mistakes.

Trust

X.509 Certificate

A digital identity document that holds a public key. Okta signs assertions with a private key, and the app uses the matching public key from this certificate to check the signature.

Transport

Binding

The method used to carry a SAML message through the browser. Common ones are HTTP Redirect, where the message rides in the web address, and HTTP POST, where it rides inside a hidden form.

Putting it together

Picture a sealed envelope. The sender name on the outside is the Issuer. The envelope is addressed to one named company, which is the Audience. It must be delivered to a specific mailbox, which is the ACS URL. Inside is a letter about one person, using their Name ID and a few attributes. A wax seal on the letter is the signature, and the seal’s pattern is known from the certificate. Every SAML setting in Okta is one of these parts of the envelope.

4Architecture and Components

A SAML login touches the person, their browser, the app, and several parts inside Okta. Seeing them on one map makes the whole system feel small.

The most important detail in SAML is that the app and Okta usually never talk to each other directly during a login. The person’s browser carries the messages back and forth. That is why SAML works even when the app sits in one company’s data center and Okta sits in another. The two sides only need to trust each other’s signatures, not connect over a private line.

flowchart LR
    U["User"] --> B["Web Browser"]
    B --> SP["Service Provider App"]
    B --> OS["Okta Sign-in Page"]
    subgraph TEN ["Okta Tenant"]
        OS --> POL["Authentication Policy and MFA"]
        POL --> UD["Universal Directory"]
        OS --> AI["SAML App Integration"]
        AI --> CERT["Signing Certificate"]
        AI --> LOG["System Log"]
    end
    UD --> EXT["Active Directory or HR Source"]
    
Figure 1. The main parts involved in a SAML login with Okta.

The parts inside Okta

Okta tenant. Your company gets its own private Okta space, called an org or tenant, with its own web address. Everything below lives inside it. Think of the tenant as your company’s own office inside a large shared building.

Universal Directory. This is Okta’s central list of people and their details: name, email, department, manager, and group memberships. It can be filled directly, or it can copy people from other systems such as Microsoft Active Directory or an HR system like Workday. It works like a company phone book that every other part consults.

SAML app integration. This is the object an administrator creates for each app. It stores the ACS URL, the Audience URI, the Name ID rules, and the attribute rules. It is like a customer file kept for one particular app, describing exactly how to write letters to it.

Assignments. An app integration only works for people who are assigned to it. An admin can assign individual users or whole groups. Groups are far easier to manage, because adding someone to a group instantly gives them every app that group is assigned. This is the guest list at the door of the app.

Authentication policy. Rules that decide how strongly a person must prove themselves before Okta issues an assertion. For a payroll app the rule might demand a second factor, such as a phone prompt. For a low-risk app it might be lighter. In older Okta screens this is called a sign-on policy. Think of a security guard who asks for more ID at the vault than at the lobby.

Signing certificate. Each SAML app integration uses a key pair to sign assertions. The private half stays inside Okta. The public half is shared with the app as a certificate. This is the wax seal.

End-user dashboard. The web page where a person sees tiles for every assigned app. Clicking a tile starts a login. This is the lobby with a signboard of every door the person may use.

System Log. A searchable record of what happened: who signed in, to which app, when, and whether it worked. This is the building’s security camera record, and it is the first place to look when a login fails.

i
Production example

A large software company with tens of thousands of employees will usually keep its people in a source of truth such as an HR system, sync them into Okta groups by department, and assign apps to those groups. A new engineer on day one then sees the right set of app tiles with no ticket ever filed.

5How a SAML Login Works Internally

There are two ways a login can start. The person can begin at the app, or begin at Okta. Both end the same way.

Flow one: starting at the app (SP-initiated)

This is the most common flow. The person types the app’s address, or clicks a bookmark, without logging in to Okta first.

sequenceDiagram
    participant U as User Browser
    participant S as Service Provider App
    participant O as Okta Identity Provider
    U->>S: Open the app address
    S-->>U: Redirect with a SAML request
    U->>O: Deliver the SAML request
    O-->>U: Show the sign-in page
    U->>O: Enter password and extra factor
    O-->>U: Return a form holding the signed assertion
    U->>S: Post the assertion to the ACS URL
    S->>S: Check signature, audience, and time window
    S-->>U: Create a session and open the app
    
Figure 2. SP-initiated login: the browser carries every message.
1

The person asks for the app

They open the app’s address. The app notices there is no active session for them.

2

The app creates an authentication request

The app builds a short SAML request that says, “I am this app, please identify this person.” It sends the browser to Okta with the request attached, usually through the HTTP Redirect binding.

3

Okta checks for an existing session

If the person already signed in to Okta earlier today, Okta skips the password step. This is why the second and third app of the day open instantly.

4

Okta authenticates the person

If there is no session, Okta shows its sign-in page and applies the authentication policy, which may include a second factor.

5

Okta checks the assignment

Okta confirms the person is assigned to this app. If not, the login stops here with an access message.

6

Okta builds and signs the assertion

Okta fills in the Name ID, the attributes, the Audience, the time window, and then signs the result with the app’s private key.

7

The browser delivers the assertion

Okta sends back a web page holding a hidden form with the assertion inside. The browser submits it automatically to the app’s ACS URL through the HTTP POST binding.

8

The app validates everything

The app checks the signature against Okta’s certificate, confirms the Audience is itself, confirms the delivery address matches, and makes sure the time window has not passed.

9

The app opens a session

The app finds the matching account using the Name ID, starts its own session, and shows the person the page they wanted, using the RelayState if one was sent.

Flow two: starting at Okta (IdP-initiated)

In this flow the person first signs in to Okta and clicks an app tile on the dashboard. Okta skips the app’s request, because the person has already made their choice. It creates the assertion straight away and sends it to the app’s ACS URL.

flowchart LR
    A["Person signs in to Okta"] --> B["Dashboard shows app tiles"]
    B --> C["Person clicks an app tile"]
    C --> D["Okta builds a signed assertion"]
    D --> E["Browser posts it to the app ACS URL"]
    E --> F["App validates and opens a session"]
    
Figure 3. IdP-initiated login: the journey starts at the Okta dashboard.
QuestionSP-initiatedIdP-initiated
Where does the person start?At the app’s own addressAt the Okta dashboard
Does the app send a request first?YesNo
Can the app link to a deep page?Yes, easilyOnly with a RelayState
Main security concernFewer, because the app can match a reply to its requestThe app cannot match the reply to any request, so it must be extra careful about replays
Common useBookmarks, links in email, daily useLaunching from the company portal
Analogy

SP-initiated login is like walking up to a club door and being sent to the registration desk across the street, then returning with a stamped card. IdP-initiated login is like being handed a stamped card at the registration desk first and then walking to the club. The club’s bouncer reads the same stamp either way.

6What Is Inside a SAML Assertion?

The assertion is the heart of SAML. Knowing its parts tells you exactly what to check when something goes wrong.

An assertion is an XML document, but you can think of it as a form with labeled boxes. Each box answers a question the app needs answered before it trusts the person.

PartQuestion it answersEveryday comparison
IssuerWho created this message?The name of the passport office
Subject and Name IDWho is this about?The name printed on the passport
Subject confirmation dataWhere may this be delivered, and which request does it answer?The destination written on a parcel label
Conditions: time windowWhen is this valid?Issue and expiry dates
Conditions: audience restrictionWhich app may accept this?A ticket that names one event only
Authentication statementHow and when did the person log in?A note saying checked in person at 9:02
Attribute statementWhat else should the app know?Extra lines on a name badge
SignatureCan I trust that nobody changed this?The tamper-proof seal

The time window

Assertions are meant to be used almost immediately. Okta marks each one with a start time and an end time, and the window is short, only a few minutes. If a thief copied an assertion, it would soon be useless. This also means the clocks on the app’s server and on Okta must agree closely. If the app’s clock is wrong by too much, it may think a fresh assertion is already expired.

The signature

Okta signs the assertion by default, and the administrator can also choose to sign the outer response. Signing uses a pair of keys. The private key signs and stays secret inside Okta. The public key, shared through the certificate, lets anyone check the seal but not create one. If a single character in the assertion is changed after signing, the check fails. That is how the app knows that a person did not edit their own group name on the way.

Encryption is a separate choice

Signing proves who wrote the message and that it was not changed. It does not hide the content. The message travels over HTTPS, so outsiders cannot read it on the wire, but the browser itself can see it. For extra privacy, Okta can optionally encrypt the assertion with the app’s public key, so only the app can open it. Most basic setups skip this and rely on signing plus HTTPS.

!
Watch out

An app that does not verify the signature, or that only checks the signature on part of the document, is dangerous. A signed assertion is only useful if the receiving app actually checks it, every single time.

7Setting Up a Basic SAML App in Okta

Here is the full journey for a custom app, from an empty screen to a working login. Labels may differ slightly on your screens.

flowchart TD
    A["Get the app's ACS URL and Entity ID from the vendor"] --> B["Create App Integration and choose SAML 2.0"]
    B --> C["General Settings: name and logo"]
    C --> D["Configure SAML: URLs, Name ID, attributes"]
    D --> E["Finish the wizard"]
    E --> F["Assign people or groups"]
    F --> G["Copy Okta SSO URL, Issuer and certificate"]
    G --> H["Paste them into the app's SSO settings"]
    H --> I["Test SP-initiated and IdP-initiated login"]
    
Figure 4. Setup order for a custom SAML 2.0 app.
1

Collect the app’s values first

Open the app’s SSO or “SAML” settings page, or its documentation. Find its ACS URL and its Entity ID. These two values are the foundation of the setup, so gather them before you open Okta.

2

Create the app integration

In the Okta Admin Console go to Applications, choose Create App Integration, select SAML 2.0, and continue.

3

Fill in General Settings

Give the app a clear name. This is the name people see on their dashboard tile, so choose something recognizable. A logo is optional.

4

Configure SAML

Paste the app’s ACS URL into Single sign-on URL, and its Entity ID into Audience URI (SP Entity ID). Choose the Name ID format and the Application username. Add attribute statements if the app needs more than the identifier.

5

Finish the wizard

The last step asks whether you are an Okta customer adding an internal app or a software vendor. Pick the first for your own apps and finish.

6

Assign people or groups

Open the Assignments tab and add the groups that should have access. Prefer groups over individuals.

7

Hand Okta’s details to the app

On the Sign On tab, open the setup instructions. Okta shows three things: the Identity Provider Single Sign-On URL, the Identity Provider Issuer, and the X.509 certificate. A metadata link is also offered, and many apps can read it directly. Paste these into the app’s SSO page.

8

Test both ways

Open the app’s address in a private browser window to test the SP-initiated flow. Then click the tile on the Okta dashboard to test the IdP-initiated flow. Use a test user, not an administrator, so you see what normal people see.

The core fields in plain words

Okta fieldWhat it meansWhere the value comes from
Single sign-on URLThe mailbox where Okta delivers the assertion (the ACS URL)The app vendor
Audience URI (SP Entity ID)The unique name of the app that the assertion is addressed toThe app vendor
Default RelayStateAn optional starting page inside the app after loginYou decide, if the app supports it
Name ID formatThe style of the main identifier, such as email address or unspecifiedThe app vendor’s requirement
Application usernameWhich Okta field becomes the identifier, such as Okta username or emailYou decide, matching what the app stores
Attribute statementsExtra facts to send, such as first name and last nameThe app vendor’s list of required names
Group attribute statementsWhich group names to send, chosen with a filterYou decide, matching the app’s role rules
i
Tip

Copy the vendor’s URLs exactly. A missing slash at the end, “http” instead of “https”, or a different capital letter is enough to make the Audience or the destination fail to match. Most beginner failures come from one mistyped character.

Analogy

Setting up SAML is like two companies exchanging business cards. The app gives Okta its address and its official name. Okta gives the app its own address, its official name, and a sample of its signature. Once both cards are in each other’s hands, either side can recognize the other from then on.

8Name ID, Attributes and Group Mapping

The connection works only if the app can match the incoming person to an account it already has. That is the job of the Name ID and the attributes.

Choosing the Name ID

The Name ID is the app’s primary key for finding the person. Okta lets you pick its format. The usual choices are:

  • EmailAddress. The person’s email is sent. Easy to understand, and what many apps expect.
  • Unspecified. The app and Okta agree privately on what the value means. This is the most common default in Okta.
  • Persistent. An opaque, never-changing code for the person, meaning a code that reveals nothing about them.
  • Transient. A random code that changes at each login, used when the app should not recognize returning people.

Next, the Application username setting tells Okta which of its own fields to place into the Name ID. Typical choices are the Okta username or the primary email. Whatever you choose, it must match exactly what the app already has on file, including capital letters.

Analogy

The Name ID is like the employee number on a gym membership. The desk does not care how you look. It only types in the number and finds your file. If the number you are told does not match the number in the gym’s list, the desk cannot find you, even though you are clearly a member.

!
Common trap

If you use email as the Name ID and a person later changes their email, the app may treat them as a brand new stranger and create a second account. For long-lived accounts, a stable identifier that never changes is safer. Plan this early, because changing it later is painful.

Attribute statements

Attribute statements are optional extra facts. You give each fact a name that the app expects, and you choose which Okta profile field supplies the value. Okta uses a small expression language for this, where something like user.email means “this person’s email”. For example, an app may need the names firstName, lastName and department. You then map each name to the matching Okta field.

Many apps use these facts for Just-In-Time provisioning. That means the first time a person logs in, the app creates their account automatically from the information in the assertion. This saves setup time, but it only creates accounts. It does not remove them. For automatic removal when a person leaves, the app needs a separate provisioning feature, often built on a standard called SCIM, which is a different topic from SAML.

Group attribute statements

Apps often grant roles based on group membership. A group attribute statement tells Okta to include the person’s group names in the assertion. Because a person may belong to hundreds of groups, you add a filter so that only relevant ones are sent. The filter can match groups that start with a prefix, equal an exact name, contain some text, or match a pattern. A common habit is naming groups with a shared prefix such as “app-slack-“, then filtering on that prefix.

Example: roles in a team chat app

A company sets up groups named for roles, such as admins and members. The SAML app sends the group names as an attribute. The chat app reads the attribute and gives admin rights only to people whose assertion lists the admin group. Moving someone out of the Okta group removes the right at their next login.

Analogy

At a large conference, everyone wears a badge with a name. Some badges also carry colored ribbons for roles such as speaker or volunteer. The name is the Name ID. The ribbons are attributes and group claims. The door staff do not phone the organizers each time. They read the badge in front of them.

9Data Flow and Lifecycle

A SAML connection has a life: it is created, used, changed, and eventually retired. So does each person who uses it.

1

A person joins

The person is created in Okta, usually by an HR source or a directory sync. They are placed in groups according to their department or role.

2

Access is granted by group

Because the groups are assigned to SAML apps, the tiles appear on the person’s dashboard. No individual setup is needed for each app.

3

Daily use

The person signs in to Okta once, passing the authentication policy. Each app tile then sends a fresh assertion. The app creates its own session based on it.

4

The person changes roles

Group memberships change. At the next login, the assertion carries the new group names, and app permissions follow.

5

The person leaves

The account is deactivated in Okta. Okta will no longer issue assertions for that person, so no new app sessions can start.

Two sessions, not one

Beginners are often surprised to learn that there are two separate sessions. The first is the Okta session, which proves the person is signed in to Okta. The second is the app session, which the app creates after reading an assertion. They have independent lengths. If an employee is deactivated in Okta, a session that the app already opened may still be alive until it expires. That is why short app session lengths, and automatic deprovisioning where possible, matter for offboarding.

Signing out

Signing out of one place does not automatically sign out of the other. SAML includes an optional feature called Single Logout, or SLO, which lets one logout ripple to the other side. Okta can enable it for an app, but it requires careful setup on both sides and many apps do not support it well. A good beginner rule is to rely on sensible session lengths and treat SLO as an extra.

The certificate lifecycle

The signing certificate has an expiry date, usually many years away, which makes it easy to forget. When it nears expiry, the administrator generates a new certificate in Okta, gives the new public certificate to the app, and then makes the new one active. If the order is wrong, or the app is not updated in time, every login for that app fails at once. Rotation should be a planned calendar event, not a surprise.

Minutes
How long one assertion stays valid
Hours
Typical length of an Okta or app session
Years
Typical life of a signing certificate
Analogy

An assertion is a paper ticket valid for one gate for a few minutes. The app session is the wristband you get after passing the gate, and it lasts for the day. The signing certificate is the ticket office’s official stamp, which is replaced every few years. Three things, three very different lifetimes.

10Security in a SAML Setup

SAML is strong when both sides do their checks. Most real incidents come from a missed check, not from broken math.

What the app must check on every login

  • The signature. It must be valid and made with the certificate the app trusts for this Okta app.
  • The issuer. The assertion must come from the exact Okta app the administrator configured.
  • The audience. The assertion must name this app, and no other. This stops a letter meant for one app from being used at another.
  • The recipient and destination. The delivery address inside the assertion must match the address that actually received it.
  • The time window. The current time must be inside the start and end times, allowing only a very small clock difference.
  • The request match. For SP-initiated logins, the reply must refer back to the request that the app really sent.
  • No reuse. The unique ID of each assertion should be accepted only once, so a captured copy cannot be replayed.

What Okta adds on its side

Multi-factor authentication, or MFA, means proving identity with more than one kind of proof, such as a password plus a prompt on a phone. In Okta, the authentication policy for each app decides when MFA is required. Because SAML apps never see the password, strong checks done once at Okta protect every connected app. This is a big security win: you harden one door instead of sixty.

Okta also lets administrators limit access by network location, device state, and risk signals, all before an assertion is created. If the policy says no, no assertion is ever made.

Well-known attacks, in simple terms

Signature wrapping. An attacker hides a forged section inside a validly signed document, hoping the app checks one part and trusts another. Defense: use mature SAML libraries from trusted vendors and keep them updated, rather than writing signature code by hand.

Replay. An attacker captures a real assertion and sends it again. Defense: short time windows, request matching, and one-time IDs.

Redirect abuse. The RelayState is a value that sends the person somewhere after login. If an app blindly follows it, an attacker could bounce a person to a fake site. Defense: the app should only allow redirects to its own known pages.

Phishing. A fake sign-in page steals the Okta password. Defense: phishing-resistant factors, such as hardware keys or Okta FastPass, and training people to start at the real dashboard.

Protect the admins

Anyone who can edit a SAML app in Okta can change where assertions are sent. That makes administrator accounts the most valuable targets. Give admin rights to as few people as possible, require strong MFA for them, and review the System Log for admin changes.

!
Security rule

Never accept unsigned assertions in production, never disable audience checking to “make it work”, and never share one Okta app integration between two different apps. Each of those shortcuts removes a lock that SAML depends on.

Analogy

A bank vault has several protections: a thick door, a guard, a camera, and a time lock. SAML security is the same layered idea. A signed message, a named audience, a short time window, and a one-time ID each stop a different kind of cheat. Removing any one layer makes the vault easier to rob.

11Monitoring, Logging and Troubleshooting

When a login fails, the person sees a vague error. The real reason is almost always visible in two places: the Okta System Log and the SAML message itself.

The Okta System Log

The System Log records each sign-in attempt, including the person, the app, the time, the result, and the reason for failure. Administrators can search it by person or by app. Sign-in events to a SAML app appear as single sign-on events, and failures include a short reason. This is the first stop for any “it does not work for me” report.

Looking at the real message

Because SAML messages pass through the browser, a free browser extension named SAML Tracer can display them. It shows the request, the response, and the decoded assertion with every box filled in. Compare what Okta sent with what the app expects, and the difference is usually obvious. Treat these captures as sensitive, because they hold personal data.

Common problems and their usual cause

SymptomUsual causeFix
App says audience mismatchAudience URI in Okta differs from the app’s Entity IDCopy the exact value from the app, character by character
App says destination or recipient mismatchWrong or mistyped Single sign-on URLCorrect the URL, including http versus https
Signature invalidThe app holds an old or wrong certificateUpload the current Okta certificate to the app
Assertion expired or not yet validClock difference between the serversFix time synchronization on the app side
Login works but app finds no accountName ID does not match the stored usernameChange Application username or Name ID format
Person lands in app with wrong roleGroup attribute name or filter mismatchAdjust the attribute name and the group filter
Okta says person is not assignedPerson or their group is missing from AssignmentsAssign the correct group

What to watch over time

  • Success and failure rate per app. A sudden spike in failures for one app often means a certificate or configuration change.
  • Certificate expiry dates for every SAML app. Keep a list and set a reminder well ahead of time.
  • MFA failures for a single person across many apps, which can signal a stolen password.
  • Administrator changes to SAML app settings, which should be rare and reviewed.
i
Debug order

Check in this order: first, is the person assigned? Second, what does the System Log say? Third, what does the captured assertion contain? Fourth, how do those values compare with the app’s settings? This order finds the problem faster than random guessing.

Analogy

Debugging SAML is like solving a failed parcel delivery. Check the sender record (System Log), open the parcel to see the label (SAML Tracer), and compare the label to the real address (the app settings). Nearly every failure is a label that does not match the address.

12Advantages, Disadvantages and Trade-offs

No technology is perfect. Knowing the trade-offs helps you choose SAML for the right jobs.

Advantages

  • One login for many apps, so fewer passwords to remember.
  • The app never sees or stores the password.
  • Strong checks such as MFA are applied once, centrally.
  • Instant access control: remove a person at Okta and new logins stop.
  • Open standard, supported by thousands of enterprise apps.
  • Pre-built catalog connections make setup quick for popular apps.
  • Central records of who signed in where.

Disadvantages

  • Setup has many small values, and one typo breaks everything.
  • XML and signatures are hard to read and debug by eye.
  • Built for web browsers, so it fits mobile and API apps poorly.
  • Existing app sessions can outlive a deactivation in Okta.
  • Single logout is unreliable across vendors.
  • Certificate expiry can cause sudden outages if not tracked.
  • Okta becomes a critical dependency for access to everything.

Trade-offs to think about

Convenience vs Risk

One key opens many doors

SSO is wonderful for users, but if one account is taken over, an attacker can reach every app tied to it. The answer is stronger MFA at Okta, not abandoning SSO.

Simplicity vs Features

Basic versus advanced settings

The basic setup is quick and covers most needs. Encryption, single logout and custom contexts add safety or features but also add more things that can go wrong. Add them only for a clear reason.

Availability vs Control

Okta as a single point of dependence

If Okta is unreachable, new logins to every SAML app can fail. Companies reduce the risk with a documented emergency admin login inside critical apps and an incident plan.

SAML vs OIDC

Older and wide versus newer and light

SAML is deeply entrenched in enterprise software. OIDC is lighter and friendlier to mobile and modern apps. Many companies use both, choosing per app.

13Design Patterns, Anti-patterns and Best Practices

Teams that run SAML well share a few habits. Teams that struggle share a few mistakes.

Patterns that work

Pattern

Assign by group, never by person

Create groups for roles and teams, then assign apps to groups. Joiners, movers and leavers then need only a group change.

Pattern

One integration per environment

Create separate Okta app integrations for test and production copies of an app. Each has its own URLs, so a test mistake can never touch production.

Pattern

Naming rules for groups and attributes

Use a clear, shared naming habit so filters are simple and anyone can understand what a group does.

Pattern

Certificate calendar

Record each certificate’s expiry date, owner, and rotation steps. Rotate on a schedule in a quiet time window.

Pattern

Emergency access

Keep one tightly protected local administrator login in each critical app, with its use logged and reviewed, for the day Okta is not reachable.

Pattern

Metadata over copy and paste

When both sides support metadata, use it. It removes typing errors and makes certificate updates smoother.

Anti-patterns to avoid

ANTI-PATTERN 01Avoid
What people do

They assign each app to individual people, one by one, because it feels faster for the first few users.

Why it hurts

After a year nobody knows who has access or why. Leavers are missed, and audits become a painful spreadsheet exercise.

Do this instead

Always assign groups, and make group membership the single place where access decisions are recorded.

ANTI-PATTERN 02Avoid
What people do

When a login fails, they switch off audience or signature checking in the app “just to get past the error”.

Why it hurts

The error was a warning that a value did not match. Removing the check lets assertions meant for other apps, or forged ones, be accepted.

Do this instead

Find the mismatch with the System Log and a captured assertion, and fix the value. Keep every check turned on.

ANTI-PATTERN 03Avoid
What people do

They reuse one Okta app integration for several apps or several environments to save a few minutes.

Why it hurts

The shared certificate and Audience mean one compromise or one change affects everything. It also hides which app caused a problem.

Do this instead

One integration per app per environment, each with its own settings and certificate.

Common beginner mistakes

  • Testing only as an administrator, so access problems for normal people are never seen.
  • Forgetting to assign any group, then wondering why the tile does not appear.
  • Choosing a Name ID that does not match the usernames stored in the app.
  • Letting the certificate expire with no reminder.
  • Mixing up the app’s Entity ID with Okta’s Issuer, which are two different names for two different parties.
  • Leaving old test apps active in the production Okta org.

14Beyond the Basics: Performance, Availability and Advanced Options

Once the basic connection works, a few extra topics decide whether it stays smooth at scale. Each one below is optional, and each can be added later.

Performance and scale

Building an assertion is a small piece of work: Okta looks up the person, applies the policy, fills in a few boxes, and signs the result. The slow part of a login is almost always the human, who types a password or approves a phone prompt. Because the app session lasts for hours, a person usually triggers only a handful of assertions per day. Even a company with fifty thousand employees creates a modest, steady flow of requests, with a spike each morning when everyone arrives. The busiest moment is the start of the working day, so test new apps outside that rush and avoid forcing every app session to expire at exactly the same hour.

Analogy

Think of a stadium entrance. Checking one ticket takes a second. The queue forms only because thousands of fans arrive together. Spreading arrival times, and opening more gates, keeps the line short without making each check any faster.

Availability and reliability

Okta runs as a cloud service built to stay available, but your own setup still matters. Keep a record of every SAML app, who owns it, and which certificate it uses. Keep emergency access in each critical app. Have a written plan for what the help desk says if sign-in is slow. A good plan also lists which apps are essential during an outage, such as the pager tool that on-call engineers need, so those get a backup login first.

Single Logout

Single Logout asks every connected app to end its session when the person signs out of one place. It sounds perfect, but it needs both sides to support the same logout messages and to agree on how sessions are named. When one app ignores the request, the person believes they are signed out while one session remains open. Many teams skip it and choose short app sessions instead.

Assertion encryption

If you turn on encryption, the app must give Okta its public certificate, and Okta locks the assertion with it. Only the app’s private key can open it. This protects the content from the browser and from any tool that records traffic, at the cost of one more certificate to track and one more thing that can expire.

Signature and digest algorithms

Signing involves a math recipe, and Okta lets you choose the recipe. The common modern choice is based on the SHA-256 family, and it is a strong default. Pick something older only if an ancient app refuses anything else, and plan to upgrade that app.

Authentication context and forced login

Some apps ask Okta for a certain strength of login, or demand that the person log in again even if a session exists. Okta can honor this, which is helpful for sensitive actions such as approving a large payment. Use it sparingly, because every forced login adds friction for the person.

Provisioning with SCIM

SCIM is a separate standard for creating, updating, and removing accounts in an app automatically. Pairing SAML with SCIM gives the full lifecycle: SAML handles the login, and SCIM keeps the account list in step with Okta. When a person leaves, SCIM can disable their account inside the app immediately, which closes the gap left by long app sessions.

Analogy

SAML is the front-door guard who checks tickets as people arrive. SCIM is the office that keeps the guest list up to date, adding new names and crossing off the ones who left. A building with a guard but no updated list is only half protected.

Okta as a service provider

So far Okta has been the identity provider. It can also be the receiving side, trusting another identity provider such as a partner company’s system. The same ideas apply with the roles reversed: Okta now publishes an ACS URL and an Entity ID, and the partner signs assertions that Okta checks. Knowing the basic pattern makes both directions easy to follow.

15Real-World and Industry Examples

SAML shows up wherever many people use many business apps. These typical scenarios show how basic SAML in Okta is used in practice.

Well-known business apps such as Salesforce, Slack, Zoom, Box, Atlassian Cloud, Workday and ServiceNow all support SAML 2.0 for single sign-on, and Okta’s catalog contains pre-built connections for a very large number of apps like these. That means a company can connect them using the same basic pattern again and again.

A global software company onboarding engineers

New hires are created in Okta from the HR system. Department groups are assigned to the code hosting service, the chat tool, the ticketing system and the video meeting tool. On day one the engineer logs in once and sees all four tiles. When the engineer moves to another team, a group change updates all access with no tickets.

A hospital protecting sensitive systems

Doctors and nurses need quick access, because every second counts at a bedside, but patient systems need strong security. The hospital uses an authentication policy that demands a second factor for patient records and a lighter check for the staff cafeteria menu. The records system never sees any passwords, only signed assertions from Okta.

A university serving students and staff

Thousands of students arrive every year and leave later. Group membership is based on student, teacher, or administrator status. Course tools, library systems and email all use SAML, so a graduation date change in one place switches off access everywhere at the next login.

A company after an acquisition

When one company buys another, the new employees can be brought into the same Okta org quickly. Their existing apps get SAML connections, and a single dashboard gives them access to both companies’ tools without making everyone create dozens of new passwords.

A team that built its own internal tool

An in-house reporting tool is not in any catalog. The team adds SAML support using a standard library, creates a custom SAML 2.0 app integration in Okta, and gets company-grade login and MFA without building a password system of its own.

16Frequently Asked Questions

Q1Is “SAML (Basic)” an official Okta product name?
No. It is a casual label for the standard SAML 2.0 app integration, set up with the core fields only. In the Admin Console you will simply choose SAML 2.0 as the sign-in method.
Q2What is the difference between the IdP and the SP?
The identity provider, Okta here, proves who the person is. The service provider is the app that wants that proof before letting the person in.
Q3Does the app ever see my Okta password?
No. The password is typed only into Okta’s page. The app receives a signed assertion, never the password.
Q4What is an ACS URL and where do I find it?
It is the address on the app that receives the assertion. You find it in the app’s SSO or SAML settings or its documentation, and you paste it into Okta’s Single sign-on URL field.
Q5What is the difference between the Audience URI and the Issuer?
The Audience URI names the app that should accept the assertion. The Issuer names Okta, the sender. They are two different names for two different parties and are easy to mix up.
Q6Why does login work from the Okta dashboard but not from the app’s own address?
The IdP-initiated flow may be set up correctly while the app’s SP-initiated flow is missing a setting, such as the app not knowing Okta’s SSO URL, or the app’s login page not being switched to SSO. Test and check both flows.
Q7What happens when the signing certificate expires?
Logins fail, because the app can no longer trust the signature. Prevent this by tracking expiry dates and rotating the certificate before it ends, with the new certificate given to the app first.
Q8If I deactivate a person in Okta, are they logged out of every app?
Not necessarily. New logins are blocked, but an app session that already exists may last until it expires. Use short app sessions and, where available, automatic deprovisioning.
Q9Should I use SAML or OIDC for a new app?
If the app is a classic enterprise web app that already supports SAML, SAML is fine and widely understood. For mobile apps and modern single-page apps, OIDC is usually the better fit. Many apps support both, so choose what the app supports best.
Q10Does SAML create user accounts in the app?
SAML proves identity. Some apps create an account automatically at first login, called Just-In-Time provisioning. Creating, updating and removing accounts in a complete way is the job of provisioning features, commonly built on SCIM.
Q11Do I need to encrypt the assertion?
Not for most basic setups. HTTPS protects the message in transit and the signature protects its integrity. Encryption is an extra layer for cases where even the browser should not read the content.
Q12What is the quickest way to find out why a login failed?
Look at the Okta System Log for that person and app, then capture the assertion with a SAML debugging extension and compare its values with the app’s settings.

17Summary and Key Takeaways

SAML in Okta is, at heart, a trusted way for an identity provider to tell an app who a person is, using a signed message that the browser carries. The basic setup needs only a few values, and mastering those few values gives you the foundation for every more advanced feature.

Key Takeaways

  • SAML (Basic) in Okta is the core SAML 2.0 app integration: Okta is the identity provider, the app is the service provider, and a signed assertion proves who the person is.
  • Four values matter most: the app’s ACS URL, its Audience URI or Entity ID, the Name ID rule, and any attribute or group statements. Most failures come from one of these not matching exactly.
  • The browser carries every message, so Okta and the app only need to trust each other’s signature, with SP-initiated and IdP-initiated flows both ending in the same assertion.
  • Security lives in the checks: signature, issuer, audience, destination, time window and one-time use must all be verified by the app, and MFA is enforced once at Okta.
  • Assign by group, use one integration per app per environment, and keep a calendar for certificate rotation.
  • Remember the two sessions: deactivating someone in Okta blocks new logins but does not always end an existing app session.
  • Debug in order: assignment first, then the System Log, then the captured assertion, then the app’s settings.