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

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

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

          搜索所有 Salesforce 帮助
          适用于外部 API 网关的 OpenID Connect 动态客户端注册

          适用于外部 API 网关的 OpenID Connect 动态客户端注册

          虽然不是典型的授权流程,但您可以使用 OpenID Connect 动态客户端注册来使您的 Salesforce 实例成为独立的 OAuth 授权服务器,以保护托管在外部 API 网关上的资源。

          所需的 Edition

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

          动态客户端注册使资源服务器能够直接将客户端应用程序在 Salesforce 上注册为连接的应用程序。客户端应用程序是请求访问受保护资源的外部应用程序。要将客户端应用程序注册为连接的应用程序,资源服务器会向授权服务器发送一个请求。授权服务器验证资源服务器的请求,并创建连接的应用程序,为其提供唯一的客户端 ID 和客户端密码。

          作为授权过程的一部分,标记自检允许所有 OAuth 连接的应用程序检查 OAuth 2.0 访问或刷新标记的当前状态。资源服务器或连接的应用程序将客户端应用程序的客户端 ID 和密码发送到授权服务器,启动 OAuth 授权流。作为该流的一部分,授权服务器验证或自检客户端应用程序的访问标记。如果访问标记为最新且有效,客户端应用程序将被授予访问权限。

          例如,您希望 Salesforce 合作伙伴能够独立访问订单状态数据。因此,您可以构建一个服务,通过在它前面加上 API 网关来公开多个系统的订单状态,该网关部署在 MuleSoft Anypoint 平台上。要启用对此数据的受保护访问,请执行以下步骤。

          1. 在 API 网关上应用 OpenID 令牌强制策略。
          2. 将您的 Salesforce 实例配置为 Mulesoft Anypoint 平台上的客户端管理提供商。

          通过该配置,API 网关在 OpenID Connect 动态客户端注册流中使用您的 Salesforce 实例作为其授权提供商。

          下面是该流的操作步骤。

          1. 为 API 网关创建连接的应用程序,并为其生成初始访问令牌。Salesforce 需要此令牌,以对动态客户端注册请求进行身份验证。请查看生成初始访问令牌
          2. 配置 API 网关:
            • 应用 OpenID 令牌强制策略。
            • 将您的 Salesforce 实例配置为客户端管理提供商。
            • 如果您的 API 网关需要,请注册您的初始访问令牌。
          3. 为了启动流,API 网关向 Salesforce 动态客户端注册端点注册连接的应用程序
          4. 成功注册后,Salesforce 会使用注册的已连接应用程序的元数据进行响应
          5. API 网关向 Salesforce 授权端点发送请求,以基于与其相关联的授权许可类型来批准注册的连接应用程序。验证成功后,Salesforce 会为注册的已连接应用程序生成访问令牌。
          6. API 网关向 Salesforce 令牌自检端点发送请求,以验证访问令牌。
          7. 验证成功后,API 网关允许注册的连接应用程序访问受保护的数据。

          注册连接的应用程序

          代表外部 API 网关的连接的应用程序向 Salesforce 动态客户端注册端点注册新的客户端应用程序,作为连接的应用程序。动态客户端注册端点 URL 的格式是 https://hostname/services/oauth2/register

          备注
          备注 对于可通过动态客户端注册端点的 OAuth 2.0 连接的应用程序,最大数量是 100。

          Salesforce 需要请求 OAuth 2.0 连接的应用程序,以在请求的标题中提供初始访问令牌。此示例是请求发布到动态客户端注册端点。

          POST /services/oauth2/register HTTP/1.1
          Content-Type: application/json
          Accept: application/json
          Authorization: Bearer <initial.access.token>
          Host: myorg.salesforce.com
          
          {"redirect_uris":["https://client.salesforce.com/redirect.html",
          "https://client.salesforce.com/callback","http://localhost"],
          "response_types":["code","token","id_token"],
          "grant_types":["authorization_code","implicit","refresh_token"],
          "application_type":"web",
          "contacts":["abc@sf.com","ve7jtb@example.org"],
          "client_name","Client Name Example",
          "logo_uri":"https://client.salesforce.com/logo.png",
          "client_uri":"https://client.salesforce.com/info.html"}

          在注册请求中包括以下参数。有关这些参数的其他信息,请参阅包含在正误表集 1 中的 OpenID Connect 动态客户端注册 1.0 中的章节 3.1 客户端注册请求

          参数 描述
          redirect_url 成功身份验证后用户重定向的 URL。重定向 URL 必须匹配连接的应用程序的回拨 URL 字段中的一个值。否则,批准失败。您可以在连接的应用程序的“管理连接的应用程序”页面或连接的应用程序的定义中找到重定向 URI。该值必须是编码 URL。
          response_types

          (可选)客户端限制自己使用的 OAuth 2.0 响应值。

          Salesforce 未存储或限制客户端的响应类型。

          grant_types

          (可选)客户端限制自己使用的 OAuth 2.0 授予类型。

          Salesforce 未存储或限制客户端的授予类型。

          application_type

          (可选)应用程序类型,例如本地web

          Salesforce 不会存储客户端的应用程序类型。

          contacts (可选)如果您未提供联系人值,Salesforce 会自动生成默认联系人。
          client_name (可选)如果您未提供客户端名称值,Salesforce 会自动生成默认客户端名称。
          scopes

          (可选)定义连接的应用程序可以访问的受保护资源类型的权限。当您构建连接的应用程序时,您可以为它分配范围,并且它们在授权流程中包含在 OAuth 标记中。如果不包含此参数,将请求分配给已连接应用程序的所有范围。此参数中传递的范围必须是已注册范围的子集。有关有效参数,请参见 Oauth 范围

          如果您未提供范围,Salesforce 会添加客户端的 idapiopenid

          如果您在请求中包含 refresh_token 授予类型,但未提供范围,Salesforce 会添加 refresh_token 范围。

          Salesforce 使用注册的已连接应用程序的元数据进行响应

          成功注册后,Salesforce 会向 API 网关发送响应,其中包含有关新连接的应用程序的client_idclient_secret和所有注册的元数据。此示例显示了 Salesforce 对代表 API 网关的已连接应用程序的响应。

          HTTP/1.1 201 Created
          Content-Type: application/json
          Cache-Control: no-store
          Pragma: no-cache
          
          {"client_id":"client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1
          uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE",
          "client_secret":"client_secret=
          1955279925675241571",
          "registration_access_token":"00DR00000009GVP!ARQAQE5XuPV7J4GoOu3wvLZjZI_TxoBpeZpRb6d8AVdII6cz
          _BY_uu1PKxGeAjkSvO0LpWoL_qfbQWKlXoz1f2ICNiy.6Ndr",
          "registration_client_uri":"https://login.salesforce.com/
          services/oauth2/register/3MVG9qKMKuRGRcbs8STMW7uUqqf0OP5l1GeQt1qRF6_
          UyAqTC1ky0RlpN3L9Z8PSo4nTTTmDzymYy4tEbrKY.",
          "client_id_issued_at":1534292303,
          "client_secret_expires_at":0,
          "token_endpoint_auth_method":"client_secret_post",
          "redirect_uris":["https://login.salesforce.com/redirect.html",
          "https://client.salesforce.com/callback","http://localhost"],
          "response_types":["code","token","id_token"],
          "grant_types":["authorization_code","implicit","refresh_token"],
          "contacts":["abc@sf.com"],
          "client_name":"Client Name Example",
          "logo_uri":"https://client.salesforce.com/logo.png",
          "client_uri":"https://client.salesforce.com/info.html",
          "scopes":["openid","refresh_token","id","api"]}
          

          请求令牌自检

          代表外部 API 网关的已连接应用程序向 Salesforce 令牌自检端点发送请求,以验证其访问令牌。有关此请求的详细信息,请参见 OpenID Connect 标记自检

          Salesforce 验证令牌

          Salesforce 会验证页头中的客户端凭据并发送响应表示令牌是否处于活动状态。此响应表示令牌仍处于活动状态。

          HTTP/1.1 200 OK
          Content-Type: application/json
          
          {
          "active":true,
          "scope":"id api web full refresh_token openid",
          "client_id":"OAuthSp",
          "username":"myuser@salesforce.com",
          "sub":"https://login.salesforce.com/id/00Dxx0000001gEREAY/005xx000001Sv6AAAS",
          "token_type":"access_token",
          "exp":1528502109,
          "iat":1528494909,
          "nbf":1528494909"
          }

          如果您在请求中包含 child_sessions 参数,响应会包含有关子会话有效性的信息,例如以下内容。

          HTTP/1.1 200 OK
          Content-Type: application/json
          
          {
          "active":true,
          "scope":"id api web full refresh_token openid",
          "client_id":"OAuthSp",
          "username":"myuser@salesforce.com",
          "sub":"https://login.salesforce.com/id/00Dxx0000001gEREAY/005xx000001Sv6AAAS",
          "token_type":"access_token",
          "exp":1528502109,
          "iat":1528494909,
          "nbf":1528494909
          child_sessions":{ 
                "content":"inactive",
                "lightning":"active",
                "visualforce":"missing"}
          }

          如果令牌未处于活动状态,Salesforce 会发送以下响应。

          HTTP/1.1 200 OK
          Content-Type: application/json
          
          {
          "active": false
          }
           
          正在加载
          Salesforce Help | Article