其他分享
首页 > 其他分享> > Salesforce 集成篇零基础学习(一)Connected App

Salesforce 集成篇零基础学习(一)Connected App

作者:互联网

本篇参考:

https://zhuanlan.zhihu.com/p/89020647

https://trailhead.salesforce.com/content/learn/modules/connected-app-basics

https://help.salesforce.com/articleView?id=sf.connected_app_overview.htm&type=5

 我曾经写过好几篇博客涉及到connected app的使用,比如 

salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce

Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On

这两篇确实用到了 connected app,但是当时只是根据官方的文档去进行相关的配置,大概了解干什么的,细节的知识却学习的很惭愧,最近有涉及到集成的知识。发现基础的概念很多都特别模糊,比如 Oauth2.0, connected app等等。所以准备慢慢找时间系统的学习一下集成的知识,夯实一下自己的知识库,从知道怎么实现到慢慢的了解基础的原理。

 一. Oauth2.0

 我们涉及到和其他的平台交互的时候,很多时候都会使用到Oauth。Oauth有1.0和2.0两个版本,现在大部分都使用2.0版本,需要注意1.0和2.0两个协议并不互相兼容,我们文章涉及到的内容也是基于 Oauth2.0.那 Oauth是什么?API还是?

Oauth是一个开放的协议,用于授权一个应用从一个受保护的资源通过交换令牌(token)的方式去访问数据。这里有一个概念叫做 令牌(token),本质上就是授予客户端应用程序的权限。我们传统方式去访问受限制资源是通过账号密码方式,这种方式不方便,某种程度上也不是特别安全。资源服务器可以验证令牌(token),并允许客户端应用程序访问定义(scope)的受保护资源。这里可以看到,验证了令牌以后不是为所欲为,而是只能访问相关scope范围内的受保护的资源,而不是扩充到管理员权限,从而也实现了权限的访问设置。在Salesforce中,我们可以使用OAuth授权来批准客户端应用程序对组织受保护资源的访问权限。上面的知乎上的文章也有对Oauth的中文的理解。

针对 Oauth通过几个小点进行讲解。

1. OAuth Authorization Flows(Oauth的授权流程)

Oauth流拥有多种类型,每个 Oauth 流都提供了不同的流程来批准对客户端应用程序的访问,但一般来说,流由三个主要步骤组成。

  1. 要启动授权流,客户端应用程序会请求访问受保护的资源。
  2. 作为响应,授权服务器向客户端应用程序授予访问标记。
  3. 然后,资源服务器验证这些访问标记,并批准对受保护资源的访问。

以官方的一个例子,即我们打开 Salesforce 移动应用程序访问您的 Salesforce 数据时,进行Oauth授权流程更好的说明。

详情描述如下:salesforce除了网页端访问以外,还可以进行手机端访问。比如我们手机端下载了salesforce app,第一次操作时,输入账号密码登录想要获取sf的数据,我们这时就会启动一个Oauth2.0的授权流程。在这个流程当中,有这样的几个角色:

角色说完以后,接下来模拟一下步骤,步骤如下:

  1. 你手机端打开app,手机的授权提示将会展示让你输入账号和密码;
  2. 你输入了正确的账号和密码以后点击了确定;
  3. sf手机app发送了你的凭证到了sf,并且初始化了Oauth授权流程;
  4. sf将会发送一个确认授权验证的页面,包含了允许mobile app访问以及refresh token的确认授权;
  5. 你点击了OK,批准了访问授权;
  6. mobile app启用,可以看到以及操作你授权的数据。

以上的步骤便进行了一个Oauth授权的流程操作。

 

所以小伙伴们,当我们在手机端操作看到了类似这个页面以后,其实应该了解到背后的原理就是 Oauth针对手机移动应用的授权流程。

通过上面的连接中我们可以知道 Oauth2.0操作时,token的时间通常都是短时间有效的,那如果超过了这个时间,token失效,怎么办???会不会有这种担忧。这里就要简单的描述一下这个token。token可以简单的分成2种:1种是access token,用于客户端进行请求用的,这个token是短时有效的;2种是refresh token,这个通常都会设置长时间有效的。当access token失效以后我们可以通过refresh token去获取新的access token即可。所以上面展示了第一次进入登录授权的操作,下面说一下以后通过手机app进入的流程。

  1.  你打开了手机app;
  2. session如果是可用的,mobile app立马启动;如果session失效了,mobile app通过refresh token功能从初始化的授权中获取更新以后的session,然后mobile app启动。

上面我们描述了通过手机端app进行Oauth授权的流程,当然Oauth不止是简简单单的运用于此,实际上 Oauth太强大了,我们在不同的条件下应该选择不同的Oauth授权流程。以下的用例是官方提供的,为我们应用程序中可以选择正确的流程。https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_web_server_flow.htm&type=5

 2. token(令牌)

token的作用为授权对受保护的资源的访问。授权后,连接的应用程序代表客户端接收标记。token 搭配着scope进一步定义了连接的应用程序可以访问的受保护资源的类型。scope的概念我们下面讲。Oauth中授权的server可以提供的token主要有以下的几种类型:

这里说的有点复杂,我们看一下常用的rest方式的代码更好的了解。以下的代码结构做过和其他系统交互的相比都特别的熟悉。其中 request.setHeader设置 Authorization: Bearer方式就是REST API的访问方式。(前序获取token通常都是基于账号密码获取,这里不额外展示)

request.setEndPoint('xxxxxxx');//指定的rest
request.setMethod('PUT');
request.setHeader('Content-Type', 'application/json');
request.setHeader('Authorization','Bearer '+token);
request.setBody(jsonData);
HttpResponse response = http.send(request);

 3. scope(OAuth范围)

 我们通过Oauth的最终目的是什么?是访问资源,所以如何来确保当前的user通过access_token可以访问哪些的授权数据呢?这里就引出了scope的概念。salesforce提供了以下 Oauth 范围配置分配给连接的应用程序,以定义客户端可以访问的受保护资源的类型。

除此之外,还有很多其他的配置,想要全量的理解这些可以自行查看上面的官方文档。

二. Connected App

所以我们终于聊起了 Connected App。什么是 Connected App, Connected APP Use Case 以及 如何创建一个Connected App。

1. Connected App 以及 Use Case

Connected App是一个允许外部的应用通过API 以及 标准协议来实现和Salesforce交互的架构。标准协议我们可以使用 Oauth,SAML或者 Open ID Connect。Connected App使用这些协议去对外部应用程序进行身份验证、授权并提供单点登录 (SSO)。 和Salesforce进行交互的外部应用可以运行在customer success platform, 其他平台,设备,或者saas的订阅方.所以在我们上面的流程中,登录 Salesforce 移动应用程序并从 Salesforce 查看数据时,其实我们就是在使用 connected app。概念有了以后,我们需要知道实际项目中哪些场景可以用到Connected App。官方介绍了以下的四种场景。

    1. 联合身份验证(Federation Id):通过联合身份验证,用户可以登录一次来访问多个应用程序。例如,您登录到您的 Salesforce 组织,从那里可以访问您公司的福利应用程序 Workday。
    2. 安全声明标记语言 (SAML):SAML 是一个开放的标准身份验证协议,您可以使用它在您的 Salesforce 组织中实施 SSO。SAML 允许身份提供商和服务提供商安全地交换用户信息,支持服务之间的用户身份验证。
    3. 身份提供商(Identity Provider):身份提供商充当验证用户身份的可信服务。
    4. 服务提供商(Service Provider):服务提供商是用户希望访问的应用程序,例如 Salesforce 组织或第三方应用程序,如 Workday。
    5. SAML 请求:当用户试图访问服务提供商时,服务提供商会发送 SAML 请求,要求身份提供商对用户进行身份验证。
    6. SAML 响应:为了验证用户,身份提供商会向服务提供商发送 SAML 响应。响应包含一个带有用户事实的签名 SAML 声明。
    7. SAML 声明SAML 声明是 SAML 响应的一部分,它通过声明事实(例如用户名或电子邮件地址)来描述用户。在身份验证期间,身份提供商签署 SAML 声明,服务提供商验证签名。
    8. 即时 (JIT) 配置使用带有 SAML SSO 的 JIT 配置,在用户第一次登录时自动向服务提供商注册用户帐户。如果我们希望单点登录以后更新某个user的标识等自定义操作,我们可以进行一个JIT的自定制。

2. Connected App创建和管理

我们在 setup处搜索 App Manager,右上角就有新建 Connected App的按钮,点击新建以后,有上图的UI。我们可以看到分成了大概六部分,下面就针对这6部分作为简单的介绍。

Basic Information

 这里主要是必填的三个选项:

 API(Enable Oauth Settings)

项目中经常用到外部系统Oauth通过API调用访问sf系统限定数据,通常我们可能写一些restful接口或者直接用标准的接口,这种我们通常使用Oauth配置。

当我们勾选OAuth Settings配置以后弹出来后续的启用的配置项。

其他三点项目上很少用到,感兴趣自行查看API文档。

 Web App Settings

当我们sf端想作为 identity provider去和service provider进行集成进行单点登录的配置,我们可以实现了SAML 2.0的connected app用来进行用户验证操作。

 Custom Connected App Handler

Custom Connected App Handler可以支持新协议,或者以有利于业务流程的方式响应用户属性。如果我们需要有上述的业务流程需求,我们可以设置自定义的Connected App Handler。

Mobile App Settings

当我们使用 Salesforce Mobile SDK想要实现移动应用程序连接到sf,我们可以connected app设置 Mobile App Settings,从而实现 移动应用程序这些连接的应用程序可以访问 Salesforce OAuth 服务,并调用 Salesforce REST API。

 Canvas App Settings

用于将 connected app暴露成 Canvas App。用户可以通过Chatter Tab来访问 个人的canvas app。

后面的内容基本很少会有配置,这里不做讲解,可以自行查看官方文档。

 总结:篇中也只是针对 Oauth以及 Connected App做简单介绍,详细的了解可以自行查看上方的官方的文档。关于 Oauth的不同的授权流针对不同case的不同使用方式以及 Connected App编辑和管理等感兴趣可以自行查看文档。篇中有错误地方欢迎指出,有不懂的欢迎留言。

标签:Salesforce,SAML,App,应用程序,访问,token,Connected,app
来源: https://www.cnblogs.com/zero-zyq/p/14673256.html