【问题标题】:Python Salesforce API AuthenticationPython Salesforce API 身份验证
【发布时间】:2019-10-14 17:41:52
【问题描述】:

我正在尝试在 Salesforce 中自动创建工单。为此,我将 API 与 Python 一起使用。我已经获得了我注册的 python 应用程序的客户端 ID 和客户端密码。我已经阅读了很多问题,并且出于安全目的,我不想为我的脚本使用“用户密码”流程。有什么方法可以让我只能使用“CLIENT ID”和“CLIENT SECRET”来获取访问令牌,我可以在承载标头中将此访问令牌传递给其他调用

import requests

params = {
    "grant_type": "client_credentials",
    "client_id": client_id, # Consumer Key
    "client_secret": client_secret, # Consumer Secret

}

r=requests.post("https://login.salesforce.com/services/oauth2/token", params=params)

access_token = r.json().get("access_token")

instance_url = r.json().get("instance_url")
print("Access Token:", access_token)

【问题讨论】:

    标签: python-3.x rest soap salesforce


    【解决方案1】:

    您总是需要一个 SF 用户帐户。没有办法只让后端系统与 SF 系统对话。 Salesforce 将每个人都视为用户,因此您需要为“集成用户”浪费一个帐户 - 但作为回报,您可以控制对表、列和功能的访问,就像控制真人的访问一样。这一直涉及到底层的 Oracle 数据库和数据库用户权限。

    无论您使用 OAuth2 流程(包括客户端机密)还是使用某些 certificate-based authentication - 总是需要一些“用户名和密码”元素。您能做的最好的事情是确保您的应用不需要查看和存储密码,而是显示正常的 SF 登录提示,并在成功登录时将用户重定向到您的应用以继续使用已知会话 id...

    如果您的应用程序和 SF 使用相同的单点登录,您可能可以实现更多自动化,但从广义上讲...您必须让用户通过您的应用程序登录到 SF 或创建票证专用管理员用户(然后您将此用户的凭据存储在您的应用中)

    【讨论】:

    • 非常感谢您的回复和清晰的解释。我的应用程序只是一个基于 python 的脚本,每当触发一些事件时,我需要向 Salesforce 进行身份验证并打开工单。没有用户作为中介来进行身份验证。除了不将密码存储在脚本概念中之外,在这些情况下是否有最好的身份验证方法?如果只有一种情况,您指的是这种情况吗? Please check this
    • 您是手工制作该博客文章中的消息还是使用pypi.org/project/simple-salesforce 并不重要。是的,我会说您需要 SF 用户的凭据。 (对您来说什么是“票证”?因为也许您可能会滥用一点在线案例表单,如果您只知道组织的唯一 ID,则有一种机制可以推送未经身份验证的 SF 案例和潜在客户记录)。至于如何安全地存储它 - 不知道。也许作为环境变量?在配置文件中以某种方式加密?你需要一些 Python 大师...
    • 嗯。似乎 user-password Auth 是以编程方式向 Salesforce 进行身份验证的唯一方法。我正在尝试在 Remedyforce 中开票。在这种情况下,我将通过用户密码流获取访问令牌,并在 Bearer 标头 中传递 访问令牌 以进行进一步的 CRUD 操作。对?同样对于服务帐户,我们需要启用 API 权限。
    • 如果您使用 REST,那么是的,developer.salesforce.com/docs/atlas.en-us.api_rest.meta/… 是您的朋友。除非您的所有 Remedy 用户都有 SF 帐户,否则您可以使用developer.salesforce.com/docs/atlas.en-us.api_rest.meta/…。如果您使用 SOAP API 登录调用来获取会话 ID,则不需要客户端 ID + 密码(但您仍然需要用户名和密码)。是的,您使用的帐户至少需要配置文件上的“启用 API”复选框
    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2012-09-29
    • 2022-10-13
    • 2019-01-01
    • 1970-01-01
    • 2019-07-16
    • 2020-03-21
    • 1970-01-01
    相关资源
    最近更新 更多