Skip to content

The App Is the Gatekeeper

Module 1 of 5 in the chapter External Client Apps, Tokens and Their Lifecycle, chapter 13 of Securing Salesforce: Identity and Access. Each module stands on its own.

The question this module answers: What is the app that every OAuth flow goes through, and how do you see all of them?

Look back over Part 2. Client credentials at the food festival (chapter 8). The Burger House’s web server flow (chapter 9). The device flow on the TV (chapter 9). The golden pass (chapter 11). Social sign-on, from Salesforce’s side (chapter 10). Every one of them had something in common: an app in Salesforce. Its client ID was in every request. Its settings decided what the flow could do.

Think of it as the business licence at the festival’s entrance. Every vendor needs one. The entrance checks it before it hands anybody a wristband. Whoever controls the licences controls who gets in, and what they can do.

That’s why this chapter matters. When things went wrong in 2024 and 2025, as module 4 shows, they went wrong at the app: an app someone approved, or the tokens an app was holding.

In Salesforce’s words, external client apps are “packageable frameworks to enable a third-party application to integrate with Salesforce using APIs and security protocols”, with SAML and OAuth (S1). You made them in chapters 7, 8, 9 and 11.

Every external client app has two halves, set by two different people.

The app: settings and policies An external client app, local to this org or packaged for others, has two halves. Its settings, set by the developer, say what the app is: OAuth on, the callback URL, scopes, flows, PKCE and rotation; they're packaged with it. Its policies, set by the admin, say how this org lets it in: who may use it, IP, session and high assurance; they apply in this org only, and are the admin's to set in every org. Underneath: a connected app, with new ones restricted since Spring '26, moves across with the Migrate to External Client App button in App Manager, and stays supported after Summer '27, when connected apps keep working but unsupported. Footnote: the developer can't set this org's policies, and the admin can't change the app's settings. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.58.0", "built": "2026-11-05", "id": "DGM-IAM-AT-01", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "cells 0.5.0", "theme": "stevetecharc 1.4.0"} SETTINGS: THE DEVELOPER THE APP POLICIES: THE ADMIN What the app is OAuth on, callback URL, scopes, flows, PKCE, rotation An external client app local to this org, or packaged for others How this org lets it in who may use it, IP, session, high assurance A connected app new ones restricted since Spring '26 Migrate to External Client App a button in App Manager Supported after Summer '27 connected apps keep working, unsupported packaged with it this org only moves across and stays supported The developer can't set this org's policies, and the admin can't change the app's settings. HOW TO READ IT the admin's to set, in every org still in orgs, not for new work © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Settings: the developer. What the app is: OAuth on, its callback URL, its scopes, which flows it uses, PKCE, rotation. Settings are packaged and distributed with the app (S1).

Policies: the admin. How this org lets it in: who may use it, from where, for how long, how strongly they must have signed in. Salesforce is precise: policies “are never packaged, and only affect the admin’s local org. Subscriber org admins can’t edit app settings” (S1).

So the developer can’t decide your org’s policies, and you can’t change their app’s settings. That separation is the point. The people who build an app and the people who let it into an org are often different companies.

And the secrets? The OAuth settings are split in two: a global file with the consumer details, which “can never be packaged”, and a local one that refers to it (S1). The secret doesn’t travel.

An external client app is either local, made and used in one org, like every app in this course’s labs, or packaged, for distribution to other orgs (S1).

One thing about local apps catches people out: “Local external client apps aren’t copied to a new sandbox when you clone or refresh a sandbox” (S1). So when you refresh a sandbox, plan to recreate the local apps your tests need.

Before external client apps, there were connected apps, and most orgs still have plenty. Here’s where they stand, with dates:

  • Since Spring ‘26, creating a new connected app needs a request to Salesforce Support; existing ones keep working (S3).
  • In Summer ‘27, “Salesforce is ending support for connected apps. Connected apps will keep working, but Salesforce will no longer fix bugs or provide support for the integrations and authorization flows that use them” (S2).
  • The way across: in App Manager, open the connected app and click Migrate to External Client App (S2).

So: nothing breaks tomorrow, but every connected app in your org needs a plan before Summer ‘27.

Here’s a question I’d put to any admin. How many apps can reach your org’s data right now? And which of them have the security controls switched on?

Most people don’t know. Salesforce gives you two places to find out:

  • The Insights page. From Setup, Insights: “Review the security controls of the external client apps and connected apps in your org”, both enabled and disabled, “whether they are local or developed outside your org” (S5). Find the apps missing controls, and Configure Security Posture shows which. For your own app, turn them on; for a packaged one, ask its developer, or disable it until they update it (S5).
  • The OAuth Usage page. For external client apps: who’s connected, and the power to block an app (S9).

Why bother? Salesforce describes the risk of not looking: “A previously authorized but now insecure third-party application continues to programmatically harvest sensitive records long after its business utility has ended” (S9). An app nobody remembers is still a way in.

Test knowledge. The exam guide aligns to Summer ‘23 and says connected apps. In my experience, know what the app controls in every OAuth flow, and that its admin policies are separate from its settings.

In 2023 I made a video setting up an app, then a connected app, and calling the API with it from Postman. The note under the video says what’s still right and what’s changed since.

STA 3.11 · A Step-By-Step Guide to Setting Up a Salesforce Connected App for Easy OAuth Integration · 8:06 · published 2023-10-03 · plays from YouTube when you click it · Watch on YouTube · More videos: Salesforce Identity & Access Videos

Module 2: who may use it, and how. The policies.

  • Local or packaged, for each app you build.
  • A plan for every connected app before Summer ‘27.
  • Who looks at the Insights and OAuth Usage pages, and how often.