2012-04-02 35 views
12

Salesforce.com API似乎假设您将始终将该应用用作活动用户。他们的身份验证方法(会话ID和OAuth)支持此方法,因为它们都需要经过身份验证的用户“执行某些操作”。用于后台应用的Salesforce.com API身份验证的最佳实践

当你有需要访问API的后台应用程序时,什么策略?我见过的例子要求您提供完整的凭据 - 用户名,密码和安全令牌。我不仅不想知道或存储这些信息,但它可能会改变(从密码策略等),我宁愿不让应用程序因此而中断。

对于不需要用户交互的SFDCs API进行长期身份验证的“最佳实践”是什么?

+0

老实说,我有同样的问题。每90天,我们必须进入并更新我们的SF应用程序的密码,因为SF要求它。真正的PITA。 – Josh 2012-04-02 17:07:57

+1

难道你不能仅仅使用修改数据和永不过期的密码来创建一个只有API的用户吗?还是除了API访问之外还需要做其他事情? – Gobbledigook 2012-04-02 17:15:00

+1

我正在创建应用程序,最好由其他人使用,所以这是我不得不要求大家做的。 SFDC用户帐户很贵,所以这不是一个非常有吸引力的选择。另外,我认为密码策略设置在组织级别,而不是个人级别。 – 2012-04-02 17:20:10

回答

10

Salesforce.com API请求在由sessionId(aka access_token)标识的用户上下文中操作(通过站点公开的未经身份验证的自定义API是唯一例外)。

因此,为了进行API调用,您需要一个sessionId,您可以通过存储用户名/密码/安全令牌并调用login(或oauth2用户名/密码流) 。

或者,您可以使用交互式OAuth流程,该流程要求用户只需授权一次应用程序,此时您将获得一个名为刷新令牌的长寿命令牌。在此之后的任何时候,您都可以使用oauth2令牌服务使用刷新令牌来获取新的access_token(然后可以进行API调用)。

似乎最后一种方法最能满足您的需求,这只需要一次性用户交互即可初始授权您的应用程序。

+0

谢谢,我将着眼于交互式OAuth流。对于一次性授权,我确定(事实上,我期望得到类似的结果),但我不能要求他们每一次授权。 – 2012-04-02 17:41:48

+1

以下是您提及的方法的一些链接:https://na1.salesforce.com/help/doc/en/remoteaccess_oauth_web_server_flow.htm和https://na1.salesforce.com/help/doc/en/remoteaccess_oauth_refresh_token_flow.htm – 2012-04-04 05:08:53

0

不幸的是,您需要使用一个帐户才能访问SF API。一开始我认为创建远程访问的目的是为了避免这样做,但是,事实并非如此。

不知道我在做什么是一种最佳实践方式,但我正在使用我们为此创建的API特定用户,并将凭据存储在配置文件中并使用DPAPI加密密码。我使用SOAP WS,所以我调用login(username,psswd),并在随后的调用中使用该会话ID。您也可以使用OAuth 2.0获取会话ID,但这需要您创建一个远程访问应用程序,并且您需要用户名/密码仍然

相关问题