使用OAuth 2.0令牌登录Salesforce.com

时间:2011-12-01 22:28:46

标签: oauth salesforce

目前我们没有在我们的应用程序中使用OAuth,但我们正在努力进行转变,我们直接登录并捕获输入的用户/通行证并存储它们。然后,我们转而使用存储的凭据,该功能允许用户在Salesforce.com中打开记录,我们将用户/传递到登录端点以及指向特定记录的起始URL,这很有用,是一个很受欢迎的功能,因为它是从App到Salesforce.com的简单SSO,用户可以在其中看到应用程序中可能看不到的所有数据。

转移到OAuth 2.0并使用标准的webflow,我们再也无法捕获用户/通行证,就安全性而言,这实际上是一件好事。但是我们想保留这个功能,无论如何通过传递一个OAuth令牌或某种sesson id来SSO进入Salesforce.com吗?

在阅读了更多并考虑OAuth完成的内容后,我觉得这可能是不可能的,因为获得的令牌只能用于API,而不能用于前端系统。我希望我错了,并且有办法使用这些令牌登录前端。

修改

好的我正在编辑,希望能让这一点更清晰。目前用户使用login()API方法及其用户/ pass进行身份验证,我们在本地存储此用户/传递(不理想)。然后,我们同步用户可以在应用程序中随时访问的数据子集,因为它是一个子集,我们有一个“SSO”到Sa​​lesforce.com前端的功能。这只是使用URL https://ns8.salesforce.com/?pw=PASSWORD&un=username@example.com&startURL=/recordId在Web视图(UIWebView)中打开Salesforce.com。这将登录到Salesforce.com并打开指定的记录。

继续前进我们希望将OAuth 2.0与Web流一起使用,这样我们就不会处理用户/传递,因此我们不必处理安全性令牌或打开特定的IP范围以允许在没有安全性令牌的情况下进行登录。

话虽如此,无论如何都要使用从OAuth身份验证收到的令牌/凭据来打开Salesforce.com,自动登录用户并转到特定记录?

之前我可能误用了“单点登录”,但从某种意义上说,这会模拟从我们的应用程序到Salesforce.com的SSO,因为我们的用户可以触摸应用程序中的单个按钮并登录到Salesforce.com Web界面。

3 个答案:

答案 0 :(得分:4)

当您请求OAuth令牌时,您可以指定它具有的范围,选项包括仅api(原始类型的令牌),或其他选项,其中包括将令牌与UI页面一起使用的功能。 (请参阅help中的范围参数详细信息)。当你所能做的就是告诉浏览器/ webview转到URL时,一种仍然缺失的方法是使用该令牌引导UI,但是广泛使用(但不支持)的方式是通过frontdoor.jsp,例如,你打开https:// {instance} /secur/frontdoor.jsp?sid= {the_Access_token}& retURL = {optional_relative_url_to_open}记得URLEncode这两个值。

答案 1 :(得分:1)

所以我认为您说您的应用程序使用SFDC用户名和密码进行身份验证以从SFDC检索记录以显示在您的应用程序中?

如果这是正确的 - 我认为是 - 那么您可以使用标准的Salesforce Single Sign On系统进行身份验证。有一个指南here,其中概述了设置SAML SSO系统的过程,Pat Patterson编写了一个有关安全系统如何工作的有趣功能here。他还在DeveloperForce上发表了一篇很棒的博客文章here,关于OA.com的OAuth细节,而不仅仅是SAML设置。我在针对SFDC的iPad应用程序中使用了OAuth系统,它可以快速轻松地工作。我无法理解为什么你的系统无法按照你的意愿使用协议。

答案 2 :(得分:0)

直接访问Salesforce是SSO的一个关键优势,并且肯定会提供。我不确定您在哪里阅读Salesforce中的SSO仅限API。从SSO PDF pbattisson链接到你:

  

通过单点登录,用户只需记住一个密码即可   访问网络资源或外部应用程序和Salesforce。   从企业网络内部访问Salesforce时,用户是   无缝登录,但未提示输入用户名或   密码。从公司外部访问Salesforce时   网络,用户的企业网络登录工作登录。用   要管理的密码越少,系统管理员就越少   请求重置忘记的密码。

OAuth 1& 2都支持,虽然我是OAuth 2的粉丝,因为1有一个非常挑剔的额外步骤,涉及参数的顺序和它们的编码序列。我最近编写了一个Apex-Twitter集成,并很快将其wasn't going to be as easy视为Facebook, which uses OAuth 2.0

但在您的情况下,您只是希望为用户提供实际登录Salesforce并在经过身份验证后转到特定登录页面的功能。这绝对可行。

祝你好运!

相关问题