2011-12-01 156 views
2

目前我们没有使用OAuth的使用我们的应用,但我们正在做的工作转变,我们必须直接登录,并捕获了输入的用户名/密码和存储那些。然后,我们转向并使用存储的凭证来获取允许用户在Salesforce.com中打开记录的功能,我们将用户/通行证传递到登录端点以及特定记录的起始URL,这非常有用,是一个非常受欢迎的功能,因为它是从应用程序到Salesforce.com的简单SSO,用户可以在该应用程序中看到所有可能无法看到的数据。使用OAuth 2.0令牌登陆到Salesforce.com

移动到OAuth 2.0,并使用标准的Webflow,我们不再能够捕获用户名/密码,这其实是一件好事,因为就有关安全的问题。然而,我们希望保持这种功能,无论如何,通过传递一个OAuth令牌或某种类型的sesson id,可以将SSO加入Salesforce.com?

阅读更多思考什么的OAuth实现我觉得这可能是不可能的是,所获得的令牌意味着只与API,而不是与前端系统中使用后。我希望我错了,而且有一种方法可以使用这些令牌登录到前端。

编辑

好吧,我来编辑希望使这更清楚。当前用户使用login()API方法对其用户/密码进行身份验证,我们将此用户/密码本地存储(不理想)。然后,我们会同步用户随时可以在应用内访问的数据子集,因为它是一个子集,我们有一个“SSO”功能到Salesforce.com前端。这只需使用URL https://ns8.salesforce.com/?pw=PASSWORD&[email protected]&startURL=/recordId在Web视图(UIWebView)中打开Salesforce.com。这会将我们登录到Salesforce.com并打开指定的记录。

展望未来,我们希望将OAuth 2.0与Web流程一起使用,以便我们不处理用户/通行证,以便我们不必处理安全令牌或打开特定的IP范围以允许无安全地登录令牌。

随着中说,反正是有使用来自OAuth认证收到打开Salesforce.com令牌/证书,自动登录的用户,以及转到一个特定的记录?

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

+0

令牌是一种握手机制,用于验证和引进的yourself.i怀疑你找什么是不可能实现的。 –

回答

4

当您请求OAuth令牌时,您可以指定它具有的范围,选项仅包括api(原始令牌类型)或其他选项,其中包括将令牌与UI页面配合使用的功能。 (请参阅help中的示波器参数详细信息)。其中一个缺点是使用该标记引导用户界面的方法,当你所能做的只是告诉浏览器/ web视图获得一个URL,但是一种广泛使用(但不支持)的方式是通过frontdoor.jsp,例如,你能够打开https:// {}实例{/secur/frontdoor.jsp?sid=} the_Access_token & retURL = {} optional_relative_url_to_open记得来urlencode 2倍的值。

+0

这正是我正在寻找的,谢谢!如果它能解决问题,我将对其进行测试并接受答案。 –

+0

完美的作品,再次感谢! –

+0

谢谢。这个答案也适用于我们。你提到这是不受支持的。 Salesforce是否有其他方式正式支持? – Krishna

1

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

如果这是正确的 - 这是我认为这是 - ,那么你可以只使用标准Salesforce的单点登录系统进行身份验证。有一个指南here,其中概述了建立SAML SSO系统的过程,Pat Patterson撰写了关于安全系统如何工作的有趣功能here。他还在DeveloperForce here上写了一篇很棒的博客文章,内容涉及Force.com的一般OAuth的细节,而不仅仅是SAML设置。我已经在iPad应用程序中使用OAuth系统来对付SFDC,并且它可以快速轻松地工作。我看不出为什么你的系统不能按照你的意愿使用协议。

+0

编辑我的答案来澄清事情,我还没有通过你发布的所有SAML/SSO文档。正如你熟悉它们,请让我知道如果其中一种方法将解决这个问题。谢谢。 –

+0

superfell的答案更具体,我的一般指南介绍了FDC上可能的OAuth方法。当你沿着我想象的方向前进时,它们将对你有用,但很高兴你得到了一个解决方案。 – pbattisson

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 easyFacebook, which uses OAuth 2.0

但在你的情况下,它听起来就像你只是想为用户提供实际登录到Salesforce和去一个特定的目标网页一旦被认证的能力。这绝对是可行的。

祝你好运!