Salesforce.com API似乎假设您始终将该应用程序用作活动用户。他们的身份验证方法(会话ID和OAuth)支持这一点,因为他们都需要经过身份验证的用户“做某事”。
当您拥有需要访问API的后台应用时,策略是什么?我见过的示例要求您提供完整凭据 - 用户名,密码和安全令牌。我不仅不想知道或存储该信息,而且可以更改(从密码策略等),因此我宁愿不让应用程序中断。
对于不需要用户交互的SFDC API长期认证的“最佳实践”是什么?
答案 0 :(得分:11)
Salesforce.com API请求在用户的上下文中运行,由sessionId(也称为access_token)标识(通过站点公开的未经身份验证的自定义API是一个例外)。
因此,为了进行API调用,您需要一个sessionId,您可以通过存储用户名/密码/安全令牌并在需要时调用login(或oauth2用户名/密码流)来获得一个。
或者,您可以使用交互式OAuth流,这需要用户只需一次授权您的应用程序,此时您将获得一个名为刷新令牌的长期令牌。在此之后的任何时候,您都可以使用oauth2令牌服务来使用刷新令牌获取新的access_token(然后可以进行API调用)。
似乎这样最后一种方法最能满足您的需求,这只需要一次性的用户交互即可最初授权您的应用程序。
答案 1 :(得分:0)
不幸的是,您需要使用帐户来访问SF API。一开始我认为创建远程访问的目的是避免这样做,但唉,事实并非如此。
不确定我正在做的是最佳做法,但我使用的是我们为此目的创建的API特定用户,并将凭据存储在配置文件中并使用DPAPI加密密码。我正在使用SOAP WS,因此我调用login(username,psswd)并在后续调用中使用该会话ID。您也可以使用OAuth 2.0获取会话ID,但这需要您创建远程访问应用程序,而仍然需要用户名/密码。
答案 2 :(得分:0)
OAuth 2.0 Web服务器身份验证最适合当前用例。
https://help.salesforce.com/HTViewHelpDoc?id=remoteaccess_oauth_web_server_flow.htm&language=en_US