You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用IDP Salesforce Org获取的令牌访问另一SFDC Org的API?

嘿,这个场景我之前帮人处理过,咱们一步步来捋清楚怎么用从IDP Org拿到的令牌访问第二个Salesforce Org的API:

前置必要配置(必须先搞定!)

首先得让第二个Salesforce Org信任你的IDP Org,不然不管你拿什么令牌过去,它都不认。步骤是:

  • 登录第二个Org的Setup,找到Identity > Authentication Providers,新建一个认证提供商,类型选“Salesforce”
  • 填写IDP Org的信息:比如Issuer URL可以从IDP Org的https://<IDP-Org-Domain>.my.salesforce.com/.well-known/openid-configuration里找issuer字段的值
  • 启用OpenID Connect,勾选需要的权限范围,比如api、openid这些
  • 接着去Identity > Single Sign-On Settings,启用联合认证,关联刚才建的认证提供商,还要设置用户映射规则(比如用邮箱匹配第二个Org里的用户,这样IDP里的用户才能对应到第二个Org的用户)
方式1:用IDP Org的Access Token换第二个Org的访问令牌

你从IDP Org拿到的access token只能访问IDP自己的API,没法直接用它调第二个Org的接口,所以得做一次令牌交换。推荐用Token Exchange Flow:

  • 调用第二个Org的令牌端点:https://<Second-Org-Domain>.my.salesforce.com/services/oauth2/token
  • 请求参数大概是这样(用POST方式传):
    grant_type=urn:ietf:params:oauth:grant-type:token-exchange
    subject_token=<你从IDP拿到的Access Token>
    subject_token_type=urn:ietf:params:oauth:token-type:access_token
    audience=https://<Second-Org-Domain>.my.salesforce.com
    scope=api openid
    client_id=<第二个Org里创建的Connected App的Client ID>
    
  • 成功的话,接口会返回第二个Org的access token,拿着这个token就能直接调API了,比如:
    curl -H "Authorization: Bearer <Second-Org-Access-Token>" https://<Second-Org-Domain>.my.salesforce.com/services/data/v59.0/query?q=SELECT+Id+FROM+Account
    
方式2:用OpenID令牌(ID Token)换第二个Org的访问令牌

OpenID令牌本质是身份断言,也能用来换第二个Org的令牌,用JWT Bearer Flow就行:

  • 同样调用第二个Org的令牌端点,请求参数改成:
    grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
    assertion=<你拿到的OpenID令牌(它本身就是JWT格式)>
    client_id=<第二个Org里的Connected App的Client ID>
    
  • 注意:第二个Org的Connected App必须开启JWT Bearer授权类型,而且OpenID令牌里的用户信息(比如邮箱)得在第二个Org里有对应的用户,不然交换会失败
  • 拿到第二个Org的access token后,用法就和上面一样了
几个关键提醒
  • 用户映射一定要配对:比如IDP里用户的邮箱得和第二个Org里用户的邮箱一致,或者你设置了其他有效的映射规则,不然令牌交换时会提示找不到用户
  • Connected App权限要到位:IDP的Connected App得有openid、api这些范围;第二个Org的Connected App要启用对应的授权类型(Token Exchange、JWT Bearer)
  • 令牌有效期:Salesforce的access token默认15分钟,过期了就得重新交换
  • SPA跨域问题:如果你的单页应用域名不在第二个Org的CORS允许列表里,得去Setup里加一下,不然请求会被浏览器拦截

内容的提问来源于stack exchange,提问作者Tea Bee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:43:52