【问题标题】:Salesforce identity to secure external REST end pointSalesforce 身份以保护外部 REST 端点
【发布时间】:2021-04-28 16:32:37
【问题描述】:

有什么好的 OAUTH 2.0 工作流程可用于使用 Salesforce 身份保护对外部托管 Web API 的访问,从而防止对 Web API 的所有请求受到未经授权的访问?

我最初认为用户会通过直接与身份验证端点通信来生成 OAUTH 访问令牌,然后针对他们发出的每个请求将该令牌传递给外部 Web API,在执行之前由 Web API 对其进行验证工作。

但是,Salesforce 身份验证端点上似乎没有“验证访问令牌”请求,Web API 可以使用该请求来验证访问令牌。我在 Salesforce 文档中看不到任何特定于此用例的身份验证流程,所以我认为我误解了一些东西。

【问题讨论】:

    标签: oauth-2.0 salesforce force.com


    【解决方案1】:

    你为什么不直接在 SF 中调用一些东西呢?如果您获得的访问令牌无效(会话已过期,管理员在设置 -> 会话管理等中终止了会话)它会失败吗?从成功登录中调用id 资源(请参阅https://salesforce.stackexchange.com/q/11728/799)或对用户对象或/limits 资源运行查询...什么?

    这可能有点矫枉过正(真的,对每个请求都进行验证?),当用户在 SF 中未标记为“API 启用”时,它可能会失败。每次你调用它都会重置会话超时计数器。

    也可以在 salesforce.stackexchange.com 上询问。

    【讨论】:

    • 感谢您的回复。我确实考虑过使用 userinfo 端点,但这会返回大量数据并且看起来很浪费。从那时起,我确实了解到 salesforce 上有一个自省端点,它可以让您查询访问令牌的状态,该令牌返回的数据更少并且看起来更合适。但是,您的评论表明针对身份验证服务器的访问令牌的每个请求验证也是浪费的。因此,也许在 Web API 上缓存令牌验证状态是一种好习惯,强制以某个固定的时间间隔对 salesforce 进行重新验证?
    • 我猜这取决于您的安全需求。管理员可以随时终止会话,用户可以注销,如果存在 SSO,您可能会成为从 SF 和所有使用 SF 作为身份提供者的应用程序单次注销的受害者......(您通过“连接的应用程序”登录,您为OAuth2 密钥,对吗?您可以选择指定注销 url)我不知道内省端点 :)
    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2016-10-28
    • 2017-05-08
    • 2016-03-04
    • 2012-02-06
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多