使用OAuth 2.0令牌登录Salesforce.com

使用OAuth 2.0令牌登录Salesforce.com,oauth,salesforce,Oauth,Salesforce,目前,我们的应用程序中没有使用OAuth,但我们正在努力实现这一转变,我们可以直接登录并捕获输入的用户/通行证,并存储这些用户/通行证。然后,我们将存储的凭据用于允许用户在Salesforce.com内打开记录的功能,我们将用户/传入以及特定记录的起始URL传递到登录端点,这是一个非常好的功能,因为它是一个从应用程序到Salesforce.com的简单SSO,用户可以看到应用程序中不可见的所有数据 转到OAuth2.0并使用标准webflow,我们不再能够捕获用户/通行证,就安全性而言,这实际上

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

转到OAuth2.0并使用标准webflow,我们不再能够捕获用户/通行证,就安全性而言,这实际上是一件好事。然而,我们希望保留此功能,是否有通过传递OAuth令牌或某种sesson id将SSO’ing传入Salesforce.com的方法

在阅读了更多的内容并思考了OAuth实现了什么之后,我觉得这可能是不可能的,因为获得的令牌只用于API,而不用于前端系统。但我希望我错了,有一种方法可以使用这些令牌登录前端

编辑

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

接下来,我们希望在web流中使用OAuth 2.0,这样我们就不必处理用户/通行证,也不必处理安全令牌或打开特定IP范围以允许在没有安全令牌的情况下登录

话虽如此,是否仍然可以使用从OAuth身份验证收到的令牌/凭据打开Salesforce.com,自动登录用户并转到特定记录


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

所以我想你是说你的应用程序使用SFDC用户名和密码来进行身份验证,从SFDC检索一条记录以显示在你的应用程序中


如果这是正确的-我认为是正确的-那么您可以使用标准的Salesforce单点登录系统进行身份验证。有一个指南概述了建立SAML SSO系统的过程,Pat Patterson编写了一个关于安全系统如何工作的有趣功能。他还在DeveloperForce上写了一篇很棒的博客文章,介绍了Force.com的OAuth的基本细节,而不仅仅是SAML设置。我在一个针对SFDC的iPad应用程序中使用了OAuth系统,它工作起来又快又容易。我不明白为什么您的系统不能按照您的要求使用该协议。

直接访问Salesforce是SSO的一个关键优势,而且是明确提供的。我不确定您在哪里读到Salesforce中的SSO只是API。从为您链接的SSO PDF pbattisson:

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

OAuth 1和OAuth 2都是受支持的,尽管我是OAuth 2的粉丝,因为OAuth 1有非常挑剔的额外步骤,涉及参数的顺序及其编码序列。我最近写了一篇Apex Twitter集成文章,并很快意识到这是一个很好的例子

但在您的情况下,听起来您只是想让用户能够真正登录到Salesforce,并在验证后转到特定的登录页。这是绝对可行的


祝你好运

当您请求OAuth令牌时,您可以指定它的作用域、选项仅包括api(令牌的原始类型)或其他选项,这些选项包括在UI页面中使用该令牌的能力。(请参见中的范围参数详细信息)。仍然缺少的一种方法是,当您所能做的只是告诉浏览器/webview转到URL时,使用该令牌引导UI,但一种广泛使用(但不受支持)的方法是通过frontdoor.jsp,例如打开https://{instance}/secur/frontdoor.jsp?sid={the_Access_token}&retURL={可选的相对URL_to_open}请记住对这两个值进行URL编码。

令牌是一种握手机制,用于身份验证和自我介绍。我怀疑您看起来不可能实现。编辑我的答案以澄清问题,我还没有浏览您发布的所有SAML/SSO文档。由于您听起来很熟悉这些方法,请让我知道其中一种方法是否可以解决此问题。谢谢。superfell的答案更具体,我的答案是关于OAuth在FDC上可能采用的方法的一般指南。当你沿着我想象的道路走得更远时,它们将对你有用,但很高兴你得到了一个解决方案。这正是我想要的,谢谢!我将测试它,如果它可行,我将接受答案。谢谢。这个答案对我们也有用。您提到这是不受支持的。Salesforce还官方支持其他方式吗?不,目前还没有支持的frontdoor.jsp的等效方式