启用单点登录后,如何访问 Salesforce API?



我正在尝试使用Python salesforce_api和simple-salesforce模块对Salesforce API进行SOQL查询。我一直在用客户端对象发出这些请求:

client = Salesforce(username='MY_USERNAME',
password='MY_PASSWORD',
security_token='MY_SALESFORCE_SECURITY_TOKEN')
a = client.query("SELECT something FROM some_object_table WHERE some_condition")

但是,我的公司最近限制只能通过SSO登录Salesforce(您过去可以在没有SSO的情况下直接登录Salesforce(,并且功能正在抛出:

simple_salesforce.exceptions.SalesforceAuthenticationFailed: INVALID_SSO_GATEWAY_URL: the single sign on gateway url for the org is invalid

或:

salesforce_api.exceptions.AuthenticationMissingTokenError: Missing or invalid security-token provided.

取决于我使用的模块。我怀疑这是因为 SSO 实施。

我已经看过有关通过 Okta 创建新应用程序的文档,但我需要进行身份验证并访问现有应用程序的 API。 在启用 Okta IdP 的情况下访问此 API 的最佳方式是什么?有没有办法让对 Okta 的 get 请求返回 Salesforce 的访问令牌?

呃。这是可行的,但这是一门艺术。我会尝试写出来,但您应该查看"身份和访问管理"Salesforce认证,学习指南等。尝试在 salesforce.stackexchange.com 询问,可能会得到更好的答案和 Okta 专家。

我不知道是否有对 Okta 的纯服务器端访问,您将在其中提供 OAuth2 客户端、机密、用户名和密码,然后它会静默地传递给登录。

如果你的应用是需要人工操作的适当 Web 应用程序,你仍然可以使其与 SSO 配合使用。你必须阅读有关OAuth2的一般信息(您在网络上看到它,所有"使用Google/Facebook/LinkedIn/Twitter/..."按钮(,然后实现类似这样或这样的东西。Human在您的应用程序中启动,被重定向到SF以输入用户名和密码(您看不到密码,也不关心他是否遇到正常的SF登录页面或某些SSO(,成功后他/她将被重定向回来,您会收到信息,这些信息将允许您获得会话ID(有时称为访问令牌(。获得访问令牌后,您可以进行查询等,只需将其作为HTPP授权持有者标头传递即可(简单的salesforce文档在示例顶部提及会话ID(。

看,我知道我写的东西没有多大意义。下载数据加载器并尝试使用它。您可能必须在登录时使其使用自定义域,但即使您已强制执行 SSO,仍有一种方法可以使其正常工作。你的目标是构建与数据加载程序类似的应用。这可能会有所帮助:https://stackoverflow.com/a/61820476/313628

如果您需要真正的后端集成而无需人工参与...棘手。不过,这可能是一个管理问题。他们不应该对每个人强制执行 SSO。当 Okta 关闭时,您将被锁定在组织之外,无法禁用 SSO。您应该有一个备份计划,一些未强制实施 SSO 的服务帐户。他们可能有疯狂的密码要求,也许只从办公室IP地址登录,等等。对每个人强制实施 SSO 不是一个好主意。

https://help.salesforce.com/articleView?id=sso_tips.htm

我们建议您不要为 Salesforce 管理员启用 SSO。如果你的 Salesforce 管理员是 SSO 用户,并且您的 SSO 服务器发生中断, 他们无法登录Salesforce。确保 Salesforce 管理员可以登录到 Salesforce,以便在以下情况下禁用 SSO。 出现问题。

(如果你有一个 Web 应用程序,并且它作为 Canvas 嵌入在 SF 中 - 还有另一种干净的方法可以将会话 ID 传递给你。再次 - 这仅在您有人工而不是后端集成时才有效(

如果您在 SFDC 中选中配置文件并取消选中需要 SSO 的框。

"是否启用了单点登录 [] 将用户名和密码身份验证委托给公司数据库而不是 salesforce.com 用户数据库。

最新更新