The Decision Table
Module 6 of 7 in the chapter SSO or OAuth? Choosing the Mechanism, chapter 5 of Securing Salesforce: Identity and Access. Each module stands on its own.
The question this module answers: Given any way into Salesforce, which door does it use?
Three questions, one table
Section titled “Three questions, one table”Everything in this chapter comes down to three questions, asked in order.
- Who starts it? A person, a process, a device or a thing.
- What does it reach? Salesforce’s own pages, or its data through the API.
- With no person there, whose name does it run under? One integration user, or a chosen person.
Here they are as one table. Keep it beside you when you design, and when you review someone else’s design.
The table
Section titled “The table”| Who starts it | What it reaches | Whose name | The door | Taught in |
|---|---|---|---|---|
| A person, in a browser (computer, phone or tablet) | Salesforce’s own pages | The person | A direct login, or single sign-on through an identity provider. No OAuth | Chapters 2, 4, 6 |
| A person, with a mobile app | The API | The person | OAuth web server flow with PKCE, with a refresh token | Chapters 8, 9, 13 |
| A person, on another web server that reaches in for her | The API, for her | The person | OAuth web server flow with PKCE | Chapters 8, 9 |
| A person already signed in to a central identity provider, through apps and services | The API | The person | OAuth token exchange flow | Chapter 11 |
| A process, with no person there | The API | One integration user | OAuth client credentials flow | Chapters 8, 11 |
| A process, with no person there, and a certificate preferred | The API, as a chosen person | A chosen person | OAuth JWT bearer flow (signed with a certificate; the app approved in advance) | Chapter 11 |
| A process, with no person there, through a trusted identity provider | The API, as a chosen person | A chosen person | OAuth SAML bearer assertion flow | Chapter 11 |
| A device with little or no keyboard, and a person who approves it | The API | The person who approved | OAuth device flow (local External Client Apps only, from 2026-11-30) | This chapter, module 5; chapter 9 |
| A connected thing, linked to an asset record | The API | The device | OAuth asset token flow | This chapter, module 5; chapter 11 |
Read it from the left. If a row matches, its door is your starting point, not your final answer. The rest of the design, which identity provider, which scopes, which policies, which user, follows in the chapters it names.
Every way in, on one grid
Section titled “Every way in, on one grid”The table answers one question at a time. But it helps to see the whole course on one page, too. Here’s every way to sign in to Salesforce, or to sign in with Salesforce, that this course teaches, in nine sets. Each set is a row, named for who signs in and how. Each card is one mechanism, with the chapter that teaches it.
The blue cards are the ones you’ve met in Part 1. The slate ones are still ahead, and the amber ones are on their way out. From here on, each chapter opens with its own row of this grid, on the map, so you always know where you are. And every row ends in the same place: a session, or an access token.
What’s leaving
Section titled “What’s leaving”Some doors you’ll still find in orgs are closing. This is the second half of the table, and it’s dated, because it keeps changing. Check it again when you read this.
| What you’ll find | What’s happening | Use instead | Source |
|---|---|---|---|
| Username-password flow (the app sends a username and password) | Blocked by default in orgs created since Summer ‘23; can’t be turned on in orgs created since Summer ‘26; retired for connected apps on 2027-02-20 | Client credentials (server to server); web server with PKCE (people) | S1, S2 |
| User-agent and hybrid user-agent flows (the token comes back to the browser) | Blocked in orgs created in Winter ‘27; retired on 2027-02-20 | Web server (or hybrid web server) with PKCE | S3 |
| Device flow on a connected app, a packaged app, or without a localhost callback | Stops working on 2026-11-30 | A local External Client App with a localhost callback | S4 |
SOAP API login() (a username and password to the SOAP API) | Retired in Summer ‘27, with steps before then from 2026-12-01 | OAuth: JWT bearer or client credentials for servers; web server for people | S11 |
| New connected apps | Can’t be created without a request to Support since Spring ‘26; existing ones keep working, but reach end of support in Summer ‘27 | External Client Apps | S12, S13 |
And one that isn’t retiring but has changed: since July 2026, PKCE is required for new apps that use the web server flow (S9).
How to use the table on a real project
Section titled “How to use the table on a real project”When I start an identity design, I make a list of every way into the org. Every group of people, every app, every integration, every device. Then I take each one through the three questions and write down the row it lands on. Two things almost always come out of it.
- It’s a blend. There’s never one answer for a whole company. Staff may use single sign-on, a partner its own identity provider, a mobile app the web server flow, and the nightly jobs client credentials.
- Something is on the “leaving” list. There’s nearly always an old integration on a username and password somewhere. Find it before the date finds you.
Checkpoint 1, next, has you do exactly that for Steve Trucking.
What an architect decides here
Section titled “What an architect decides here”- The list of every way into the org, with its row in the table.
- Each row’s door, and the reason, written down.
- Everything on the “leaving” list, with an owner and a date to move it.
Explore
Section titled “Explore”- OAuth Authorization Flows (opens in a new tab) (Salesforce Help, Winter ‘27; checked 2026-11-07)
- Retirement of OAuth 2.0 Username-Password Flow for Connected Apps (Release Update) (opens in a new tab) (Salesforce Release Notes, Summer ‘26; checked 2026-11-07)
- OAuth User-Agent and Hybrid User-Agent Flows Retirement (Release Update) (opens in a new tab) (Salesforce Release Notes, Winter ‘27; checked 2026-11-07)
- Restrict the OAuth 2.0 Device Flow to Local External Client Apps (Release Update) (opens in a new tab) (Salesforce Release Notes, Winter ‘27; checked 2026-11-07)
- Platform SOAP API login() Retirement & new Security Requirements (opens in a new tab) (Salesforce Help, updated 2026-10-09; checked 2026-11-07)
- New Connected Apps Can No Longer Be Created in Spring ‘26 (opens in a new tab) (Salesforce Help; checked 2026-11-07)
- Migrate All Connected Apps to External Client Apps (Release Update) (opens in a new tab) (Salesforce Release Notes, Winter ‘27; checked 2026-11-07)
- OAuth Security Controls Are Enforced for New External Client Apps and Connected Apps (opens in a new tab) (Salesforce Release Notes, Summer ‘26; checked 2026-11-07)
