Connected App Security Changes in Salesforce

Salesforce recently announced some sweeping changes to the utilization of Connected Apps. Beginning early September, access to uninstalled Connected Apps will be limited to users who have a new, dedicated permission assigned — “Approve Uninstalled Connected Apps”. This change is part of Salesforce’s security hardening to prevent social engineering attacks where bad actors trick users into connecting their org to malicious apps (for example, unauthentic versions of tools like Data Loader). Let’s review what this means, what actions you’ll need to take, and take a step back and talk about Connected App security overall.

What Are Uninstalled Connected Apps?

So, what exactly are uninstalled Connected Apps, and how do you know if anyone in your org is utilizing one? There are plenty of practical uses for an uninstalled Connected App. These are third-party applications that you are authorizing (via OAuth) to interact with your Salesforce data in some manner. Maybe your organization uses Power BI to query data from Salesforce for outside analysis. Or perhaps you are a nonprofit utilizing Donorbox for donation management, which feeds donor and donation data into your org. In either case, these apps do not have to be installed in your org for the functionality to operate. With this upcoming change, if the running users for each of these integrations do not have the “Approve Uninstalled Connected Apps” permission assigned, the functionality will break.

How to Identify Your Uninstalled Connected Apps

There are two ways to assess your utilization of uninstalled Connected Apps.

Method 1: Using the Salesforce UI

The first is to navigate to Setup → Connected Apps OAuth Usage, and you’ll see a list of all the utilized Connected Apps in your org, like in this example screenshot below.

Example of Connected Apps OAuth Usage list of Connected Apps used

If you see an “Install” button in the “Actions” column for a given app, that means the app is uninstalled. For each uninstalled app, you’ll need to click into the hyperlinked number in the “User Count” column to be taken to a screen listing the usernames of each of the users who have utilized the app, the most recent time they’ve used it, as well as the number of times they have used it.

List of usernames of each user who have utilized the app

I’m not the biggest fan of this method for immediate assessment, because the Connected Apps OAuth Usage page includes all Connected App use in the history of your org. Meaning you could have dozens of apps listed to click through – including those that haven’t been utilized for years. Attempting to step through all of those could be quite tedious and time-consuming.

Method 2: SOQL Query for Efficient Assessment

If you’re comfortable with SOQL – either via the Developer Console or Data Loader — here’s a SOQL query that will return a list that will be much more efficient to assess:

SELECT Id, AppName, UserId, User.UserName, CreatedDate, LastUsedDate, UseCount, AppMenuItemId 
FROM OAuthToken 
WHERE CreatedDate = THIS_YEAR AND AppMenuItemId = NULL
ORDER BY CreatedDate DESC

This will return you a list of each user/app combination of all uninstalled Connected Apps for the current year. If you wish to see a more thorough list of all Connected App utilization, simply remove the “AppMenuItemId = NULL” “WHERE” clause. Note, if you’re running this as an export via Data Loader, you’ll need to set the “Show All Salesforce Objects” setting.

Next Steps: Assigning the New Permission

The “Approve Uninstalled Connected App” permission should now be available in all Salesforce orgs as of this week. If you’re not seeing it, please reach out to your Account Executive. So, once you’ve identified the utilization here, you can quickly ensure all your valid usage of these continues to function as expected. Given the very abrupt rollout, Salesforce has not yet announced an official date when the standard permission change will go into effect. The language is currently “early September”, so we should expect it to be in the next week and a half or so.

The Limitation: An All-or-Nothing Approach

While it’s critical to assign this new permission to ensure your integrations do not break, it’s also an oversimplified solution that doesn’t quite absolve you from ensuring your users aren’t falling victim to bad actors. It’s an all-or-nothing permission, meaning, the users you assign this to have access to utilize any uninstalled Connected App. So, if your running user for a critical integration encounters a well-designed social engineering attempt (and let’s face it – they’re getting harder to detect), there’s nothing stopping them from inadvertently granting a malicious application access to your Salesforce data.

A More Comprehensive Solution: API Access Control

To more comprehensively address this solution, Salesforce has also recently rolled out a new feature, API Access Control. With this feature, you can configure policies for which users (or groups of users) are allowed to utilize which specific Connected Apps. It also outright prevents the utilization of any uninstalled Connected Apps, period. So, this means that your Salesforce Admins or Consulting Partners will need to take a few more steps for each new app your organization wishes to utilize; however, you can take peace of mind in knowing that your org is that much more secure. Another important thing to note is that this feature is only available by request, so you’ll need to reach out to your Account Executive to enable it.

Get Expert Help with Your Salesforce Security

Looking for assistance in the assessment of your Connected Apps, configuration of API Access Control, or just want to chat more about security? Our experienced Salesforce consulting team is here to help you navigate these critical security changes. Contact us today to discuss your specific situation and develop a customized action plan that keeps your Salesforce data secure while maintaining the integrations your business depends on.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top