本篇参考:
https://help.salesforce.com/s/articleView?id=xcloud.external_integrations.htm&type=5
https://help.salesforce.com/s/articleView?id=release-notes.rn_security_eca.htm&release=250&type=5
Salesforce 集成篇零基础学习(一)Connected App
一. External Client App介绍
Summer 24 Release Salesforce推出了新一代的Connected App,即External Client App。核心功能是允许第三方应用程序使用 API 和安全协议与 Salesforce 集成。通过简单描述看来和Connected App实现功能类似,那么为什么称为新一代的Connected App呢,我们先进行一下External Client App和Connected App的优势对比。
如果不了解Connected App的使用,可以参考上方文档进行简单了解。
|----------|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|
| 对比维度 | Connected App | External Client App |
| 分发方式 | 只能在单一 Org 内配置,无法打包分发 | 支持 2GP 打包,可随 Managed Package 分发到多个 Org |
| 适用场景 | 单 Org 内部的集成 | 跨 Org 分发、ISV 应用、复杂 OAuth 流程 |
| OAuth 支持 | Authorization Code、User-Agent、JWT、SAML、Username-Password、Device Flow、Asset Token | Authorization Code + Credentials(支持headless登录、无密码、访客用户)、JWT、Client Credentials、Device Flow |
| 配置UI | 配置在 App Manager 中,界面传统,分发状态不直观 | 独立的 External Client App Manager,支持 Distribution State(Local/Packageable),权限模型更清晰 |
| 生命周期管理 | 每个 Org 需手动维护,修改需逐一操作 | 支持集中配置,随包升级即可更新多个 Org 的配置 |
举个场景: 你在一个大型的公司,公司因为不同国家的安全合规不同,分成了多个org进行了管理,比如贵公司有北美,欧洲,亚太,中东四个org,安全要求涉及到集成,Connected App权限应该完全相同。 因为跨org,每个org的Connected App都需要单独维护并且需要确保一致,如果因为安全策略变动,OAuth Scope等变更,需要每一个org都修改和维护对应org的Connected App。有了External Client App以后,可以主org打一个2GP的包,其他的org进行安装。如果涉及到OAuth Scope等变更,2GP进行修改以及发布,其他的org只需要升级Managed Package即可。
External Client App虽然是新一代的Connected App,并且官方建议将Connected App 迁移到 External Client App,但迁移/使用以前需要考虑以下的差异,External Client App不是兼容所有的Connected App的功能,避免迁移/使用以后部分功能不好用。详情可以查看此文档: https://help.salesforce.com/s/articleView?id=xcloud.connected_apps_and_external_client_apps_features.htm\&type=5
注:迁移/新建以前,一定要详细查看文档差异,除此以外还需要和下游系统对接,了解下游系统使用的OAuth Flow。 举个例子,公司的某个下游系统和Salesforce端进行集成,使用 username-password flow,因为安全等原因考虑,External Client App不支持username-password flow。 新建并且使用以后会导致下游系统和Salesforce集成链路中断。
二. External Client App 创建
除了package方式以外,通过UI可以两种方式实现External Client App的创建,一个是既有的Connected App进行迁移,另外一个是直接创建。下面对这两种方式简单介绍。
1. Connected App迁移
-
Setup -> App Manager,找到对应的Connected App进入以后,点击Migrate to External Client App
-
Migrate的Connected App只能作为Local的External Client App使用,并且强调无法用于 username-password flow,勾选以后点击Migrate即可。
-
在 Setup -> External Client App Manager即可找到迁移以后的新一代Connected App了。
点进去以后,分区友好。
作为对比,以下是Connected App的截图,只有点击Manage以后才可以看到OAuth Policies等信息,权限模型不如External Client App直观。
2. External Client App创建
-
setup -> External Client App 点击New External Client App按钮。
-
进入以后,分区比Connected App更加的细化和友好。以下Section(Beta的目前不在文档中介绍)
- Basic Information:维护External Client App基础信息,比如名称,分发状态(Local/Packaged)
- API (Enable OAuth Settings):此处进行OAuth集成相关设置
- Web App (Enable SAML Settings):此处进行Salesforce作为IDP相关的设置
相对来说配置内容上和以前的Connected App没有太大的改变,区别是进行了更好的分区。 我们以API (Enable OAuth Settings)为例,分成了3部分:
- App Settings: 设置Callback URL以及OAuth Scope等信息
- Flow Enablement:设置当前的App支持哪个Flow类型
- Security:设置一些安全的策略。
3. External Client App的使用
我们以postman进行举例,demo中使用OAuth 2.0 Client Credentials Flow。
前置条件:
-
External Client App 找到目标App,进入后切换到Settings,勾选 Enable Client Credentials Flow
-
在Policies -> OAuth Policies勾选Enable Client Credentials Flow,然后设置Run as users
Postman 调用:
Postman使用以下的信息:
- Request Type: POST
- URL: Domain + /services/oauth2/token
Request Body中包含以下信息:
- grant_type:client_credentials
- client_id: 这个External Client App的consumer key
- client_secret: 这个External Client App的consumer secret
可以在这个External Client App的Settings -> OAuth Settings 部分,点击Consumer Key And Secret 链接获取。
效果展示:
4. 如何创建Connected App
虽然External Client App很好,但是项目原因就是需要使用Connected App,发现系统中无法创建Connected App了,如何操作呢?
Setup -> External Client Apps -> Settings, 勾选Allow creation of connected apps即可新建了。
总结
本篇主要简单介绍了一下External Client App是什么以及和Connected App的比较和简单使用。想要了解针对External Client App 更多的有趣的使用以及更多的限制,查看上面的官方文档学习更多。篇中有错误的地方欢迎指出,有不懂的欢迎留言。