Skip to the content.

🧠 What is an Identity Provider (IdP)?

An Identity Provider is:

A system that verifies who the user is and tells other systems: “Yes, this person is Sajid, and here are his details.”

That’s it.

It does authentication (login), not your API work.


🏢 In Okta terminology

Okta itself can be:

This is the part that confuses people.

Okta can say:

“I don’t want to ask username/password. I will trust some other system to log the user in.”

That “other system” is called an Identity Provider (IdP).


🔁 Real-world example

You open your company app.

You see:

Login with Google Login with Microsoft Login with Company AD

Those Google / Microsoft / AD are Identity Providers.

They authenticate you. Okta trusts them.


🔧 Flow inside Okta

User → Okta → Redirect to IdP (Google/AD/AzureAD) → Login → Back to Okta → Okta issues JWT

Important:

Okta did NOT verify password. IdP did.

Okta just trusts the IdP and issues tokens for your apps.

This is called:

Federation or Social Login or External IdP


📦 Types of Identity Providers you configure in Okta

IdP Type Example Protocol
Social IdP Google, Facebook OAuth2 / OIDC
Enterprise IdP Azure AD, ADFS SAML / OIDC
Directory LDAP / Active Directory LDAP
Another Okta Okta-to-Okta OIDC

🎯 Why companies use IdP with Okta?

Because they already have:

They don’t want new passwords.

So Okta says:

“Fine. I will trust those systems to authenticate users.”


🧠 Key difference (very important)

Component Responsibility
Identity Provider Proves who user is
Okta Authorization Server Issues access token / JWT
Your API Validates token

🏆 One-line clarity

IdP answers: “Who are you?” Okta answers: “Here is your token to access APIs.”


Example you’ll see in Okta UI

Security → Identity Providers → Add Identity Provider

That means:

“Tell Okta which external login systems it should trust.”


You’re asking:

“If anyone can log in with Google, how does Okta know this user is allowed in my application?”

This is the missing piece: trust + mapping + policy.


Step 1 — What Google proves vs what Okta decides

When user logs in with Google, Google only proves:

“This person owns this email id: sajid@gmail.com”

That’s it.

Google does authentication, not authorization for your app.

Okta’s job starts after Google finishes.


Step 2 — What Okta receives from Google

Google sends an ID token to Okta like:

{
  "email": "sajid@gmail.com",
  "name": "Sajid Khan",
  "sub": "10987654321"
}

Okta now knows:

But Okta still hasn’t allowed access.


Step 3 — Okta checks: “Do I know this user?”

This is called Account Linking / JIT Provisioning.

Okta does one of these:

✅ Case A — User already exists in Okta

Okta finds:

Okta user with email = sajid@gmail.com

👉 Login allowed


✅ Case B — JIT (Just In Time) provisioning enabled

Okta says:

“I don’t know this user, but IdP is trusted, so create new Okta user”

👉 User created → login allowed


❌ Case C — No match and JIT disabled

👉 Login denied


Step 4 — Domain restriction (very important)

In real companies, Okta is configured like:

Only allow Google users from this domain:

@mycompany.com

So if someone logs in with:

randomuser@gmail.com ❌
sajid@mycompany.com ✅

This is called IdP routing rule / domain filter.


🔐 This is how Okta controls access

Google proves Okta checks
You own this email Is this email allowed in my org?
Your identity Do I have this user?
Successful login Should I create this user?
Valid Google account Does domain match policy?

🧠 Same for your own IdP

If you build your own IdP, Okta will trust you the same way.

You will send Okta:

{
  "email": "user@yourcompany.com",
  "name": "User",
  "sub": "abc123"
}

Then Okta will:

Okta never blindly trusts.

It always does:

Identity proof (IdP) + Okta policy check


🏆 The golden rule

IdP says: “This person is genuine” Okta says: “But are you allowed in MY system?”

That decision is 100% Okta configuration:


Why “Login with Google” doesn’t mean “Anyone can enter”

Because Okta doesn’t care that Google trusts you.

Okta only cares:

Do I trust you based on my rules?