Loading
识别您的用户并管理访问
目录
选择筛选器

          没有结果
          没有结果
          以下是一些搜索提示

          检查关键字的拼写。
          使用更普遍的搜索词。
          选择更少的筛选器,并扩大搜索范围。

          搜索所有 Salesforce 帮助
          适用于服务器到服务器集成的 OAuth 2.0 客户端凭据流

          适用于服务器到服务器集成的 OAuth 2.0 客户端凭据流

          有时,您想要在两个应用程序之间直接共享信息,而无需用户参与。对于这些场景,您可以使用 OAuth 2.0 客户端凭据流。在此流中,客户端应用程序将其在外部客户端应用程序中定义的客户端凭据(它的使用者密钥和使用者密码)交换为访问令牌。此消除了对显式用户交互的需要,尽管它要求您指定集成用户来运行集成。您可以使用此流作为 OAuth 2.0 用户名密码流的更安全的替代方案。

          所需的 Edition

          适用于 Salesforce Classic 和 Lightning Experience
          适用于:所有版本

          要使用客户端凭据流,您必须创建外部客户端应用程序,并配置 OAuth 设置和访问策略。

          例如,您构建了一个自定义应用程序来运行 Salesforce 的自动报表。您希望应用程序每晚运行报表。要将自定义应用程序与 Salesforce 集成,您需要设置外部客户端应用程序。然后,要为客户端凭据流配置外部客户端应用程序,您需要启用该流并分配集成用户。当夜间报表服务开始时,您的自定义应用程序会使用这些高级步骤访问 Salesforce 数据。

          备注
          备注 该流不支持刷新标记。
          1. 外部客户端应用程序通过 POST 请求将其客户端凭据发送到 Salesforce OAuth 令牌端点。
          2. Salesforce 验证客户端凭据并验证应用程序。
          3. Salesforce 会代表您分配的集成用户返回访问令牌。
          4. 外部客户端应用程序使用访问令牌调用 Salesforce API,例如 REST API。
          5. API 以报表的请求数据作为响应。
          警告
          警告 在您设置客户端凭据流前,了解安全性风险非常重要。启用此流后,有权访问外部客户端应用程序使用者密钥和使用者密码的任何人员或应用程序都可以获得访问令牌。通过定期更改您的使用者密码来维护安全性,如果出现泄露,请立即更改。

          请求访问标记

          让我们深入了解通过客户端凭据流获取访问标记的过程。

          为了启动流,外部客户端应用程序将其客户端凭据发布到 Salesforce 令牌端点。您可以将客户端凭据作为参数包含在请求正文中。或者,为了增加安全性,请将客户端凭据放入基本授权标题中。

          重要
          重要 在开发 OAuth 集成时,请始终在 POST 请求的正文或请求标题中传递敏感信息。不要在 URL 查询字符串中使用 GET 参数来传递敏感信息。敏感信息包括但不限于用户名、密码、OAuth 令牌、客户端密码和任何个人身份信息。有关安全最佳实践的更多信息,请查看安全编码指南中的存储敏感数据

          以下是请求正文中包含客户端凭据的示例 POST 请求。

          POST /services/oauth2/token HTTP/1.1
          Host: MyDomainName.my.salesforce.com
          grant_type=client_credentials&
          client_id=*******************&
          client_secret=*******************

          对于此流,不支持对 https://login.salesforce.comhttps://test.salesforce.com 的请求。请改用 My Domain URL。要查找 My Domain URL,从“设置”中,在快速查找框中输入 My Domain,然后选择 My Domain。

          请求中必须包含这些参数。

          参数 描述
          client_id 外部客户端应用程序的使用者密钥。要访问使用者密钥,请从外部客户端应用程序管理器中找到外部客户端应用程序,并从下拉列表中选择编辑设置。然后,展开 Oauth 设置部分,并单击消费者密钥和密码。在查看消费者密钥之前,有时会提示您验证您的身份。
          client_secret 外部客户端应用程序的使用者密码。要访问使用者密码,请从外部客户端应用程序管理器中找到外部客户端应用程序,并从下拉列表中选择编辑设置。然后,展开 Oauth 设置部分,并单击消费者密钥和密码。在查看使用者密码之前,有时会提示您验证您的身份。
          grant_type

          外部客户端应用程序请求的 OAuth 2.0 授权类型。对于客户端凭据流,此值必须设置为 client_credentials

          有关客户端凭据授予类型的详细解释,请参见 Internet 工程任务组中的OAuth 2.0 授权框架 中的 4,4 客户端凭据授权部分。

          以下是基本授权标题中客户端凭据的示例。使用此格式,client_id会以格式 client_id:client_secret 附加到client_secret,结果值为 Base64 编码。

          POST /services/oauth2/token HTTP/1.1
          Host: MyDomainName.my.salesforce.com
          Header: Authorization: Basic 
          TXlDbGllbnRJRDpNeUNsaWVudFNlY3JldA==
          grant_type=client_credentials

          如果您使用此格式,grant_type 是请求正文中唯一必需的参数。grant_type必须设置为 client_credentials

          备注
          备注 由于 Salesforce 不支持令牌端点的范围,因此您不能在请求中包含范围。相反,将范围分配给外部客户端应用程序。

          Salesforce 授予访问标记

          验证客户端凭据后,Salesforce 返回包含访问标记和请求范围的响应。应用程序可以使用访问标记访问 Salesforce 中的受保护数据。

          以下是 JSON 格式的访问标记响应示例。

          {
              "access_token": "*******************",
              "instance_url": "https://yourInstance.salesforce.com",
              "id": "https://login.salesforce.com/id/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXX",
              "token_type": "Bearer",
              "scope": "id api",
              "issued_at": "1657741493799",
              "signature": "c2lnbmF0dXJl"
          }

          这些参数包含在响应中。

          参数 描述
          access_token 外部客户端应用程序用来代表客户端应用程序请求访问受保护资源的 OAuth 标记。访问标记可以附带范围形式的附加权限。
          instance_url 指示用户的组织实例的 URL。例如:https://yourInstance.salesforce.com/.
          id 可用于标识组织和集成用户的身份 URL。URL 的格式是 https://login.salesforce.com/id/orgID/userID
          token_type Bearer 令牌类型,用于包含访问令牌的所有响应。
          scope

          与访问标记关联的范围。

          范围进一步定义了客户端可以访问的受保护资源的类型。在构建外部客户端应用程序时,您可为其分配范围,并在授权流期间包含在 OAuth 令牌中。

          由于客户端凭据流不支持 UI 会话,并且不发行刷新令牌,因此 Salesforce 会自动筛选出这些范围。

          • 完全访问权限full
          • 通过 Web 浏览器管理用户数据 (web)
          • 随时执行请求refresh_token, offline_access

          有关更多信息,请查看OAuth 标记和范围

          issued_at 签名创建时间的时间戳,单位毫秒。
          signature 使用 client_secret 签名的 Base64 编码 HMAC-SHA256 签名。签名可以包括连接 ID 和issued_at值,您可以使用它们来验证身份 URL 自服务器发送以来没有更改。
           
          正在加载
          Salesforce Help | Article