asp.net – 将Salesforce.com与.NET Server C集成的最佳安全方法
我的任务是将我们自己开发的多客户端CRM与Salesforce.com集成.我将编写一个基于服务器的服务,它将把每个客户的CRM数据存储区中的信息推送到Salesforce.我想使用SFDC REST API,但如果需要可以使用SOAP API.
我正在努力理解要使用的最佳安全机制.由于解决方案将基于服务器,因此连接到SFDC时不需要用户交互.我们的服务器需要能够与SFDC建立安全连接,而无需用户提供其登录凭据. 到目前为止,我已经尝试过REST API和OAuth2.0.我已经设置了一个测试SFDC帐户并在其中配置了我们的应用程序,获取了消费者密钥,密钥和回调uri.一切正常,我的回调页面收到安全令牌.我的回调页面使用提供的令牌,如下所示: string rc = ""; try { string uri = "https://eu2.salesforce.com/services/data/v20.0/sobjects/"; System.Net.WebRequest req = System.Net.WebRequest.Create(uri); req.Method = "GET"; req.Headers.Add("Authorization: Bearer " + token); System.Net.WebResponse resp = req.GetResponse(); System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()); rc = "code=" + code + ",response=" + sr.ReadToEnd().Trim(); } catch (Exception ex) { rc = "45435465 Token=" + token + ",err=" + ex.Message; } return rc; 麻烦的是,每次运行此操作时,即使我传递了SFDC提供的安全令牌,我也会收到SFDC的401(未经授权)回复. REST API是否是这种“无人值守”访问的正确方法,任何人都可以告诉我在我的代码中做错了什么,或提供关于如何使其工作的智慧之词? 非常感谢. 解决方法
你看过
Digging Deeper into OAuth 2.0 on Force.com吗?
如果仔细阅读,您可以看到返回到回调页面的代码必须用于获取access_token.例如,用户将被重定向到您的页面,如下所示: https://app.example.com/oauth_callback?code=aWekysIEeqM9PiThEfm0Cnr6MoLIfwWyRJcqOqHdF8f9INokharAS09ia7UNP6RiVScerfhc4w%3D%3D 然后,您必须在此处为令牌服务进行HTTP POST: https://login.salesforce.com/services/oauth2/token 使用以下url编码数据(为了可读性而添加了换行符): code=aWekysIEeqM9PiThEfm0Cnr6MoLIfwWyRJcqOqHdF8f9INokharAS09ia7UNP6RiVScerfhc4w== &grant_type=authorization_code &client_id=<your_client_id> &client_secret=<your_client_secret> &redirect_uri=<your_redirect_uri> Salesforce令牌服务器将返回一些JSON数据,如下所示: { "id":"https://login.salesforce.com/id/00D50000000IZ3ZEAW/00550000001fg5OAAQ","issued_at":"1296458209517","refresh_token":"5Aep862eWO5D.7wJBuW5aaARbbxQ8hssCnY1dw3qi59o1du7ob.lp23ba_3jMRnbFNT5R8X2GUKNA==","instance_url":"https://na1.salesforce.com","signature":"0/1Ldval/TIPf2tTgTKUAxRy44VwEJ7ffsFLMWFcNoA=","access_token":"00D50000000IZ3Z!AQ0AQDpEDKYsn7ioKug2aSmgCjgrPjG9eRLza8jXWoW7uA90V39rvQaIy1FGxjFHN1ZtusBGljncdEi8eRiuit1QdQ1Z2KSV" } 返回的access_token可用于授权对REST API的请求.当它到期时,可以使用refresh_token获得新的. 据推测,refresh_token是长期存在的,并且只要用户授予了您的应用程序访问权限,就可以获得另一个access_token.所以,把它存放在安全的地方. 关于使用哪个API,我使用SOAP API实现了几个“无人值守”的集成,所以我知道它可以在那个场景中工作.从安全角度来看,这样做的缺点是您必须安全地存储凭据.但是,您必须能够解密它们才能获得sessionid.因此,它们不能像使用单向加密进行哈希处理一样安全存储. 使用REST API,您只需要存储refresh_token.如果受到攻击,攻击者从获取这些凭据到充满凭证的数据库中获得的收益会少得多.鉴于这一点,如果我今天要从头开始,我可能会给REST API一个机会. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 在asp.net 5 mvc中找不到css,js和img文件
- asp.net – EntityFramework.dll中发生了’System.Data.Ent
- asp.net-mvc – 我为什么要在LINQ To SQL存储库保存方法中使
- asp.net – .NET Core项目添加对.NET Framework项目的引用.
- 如何返回404状态,无效参数传递给我的ASP.NET MVC控制器?
- asp.net-mvc-4 – WebAPI如何指定控制器将到达哪个路由
- asp.net – 为什么不删除Server和X-Powered-By标头?
- asp.net-mvc – Asp.Net MVC Html助手扩展
- ASP.NET DropDownList OnSelectedIndexChanged事件未触发
- asp-classic – 对经典ASP的多语言支持
- asp.net – NServiceBus在Web / MVC4 SQL架构中有
- asp.net-mvc – 使用MVC的AuthorizeAttribute和多
- asp.net-mvc – ASP.NET MVC和Strings不给我编译
- asp.net-mvc – 在ASP.NET MVC DisplayFor Html
- asp.net-mvc – 绑定一个包含MVC数组的QueryStri
- asp.net-mvc – 设置Kendo UI Grid Popup(MVC)的
- vbscript – Classic ASP中的URL编码
- ASP.NET MVC中的runat =“server”标签的状态是什
- asp.net-mvc – 在MVC 4中获取表头名称的最佳方法
- asp.net-mvc – 验证消息中的换行符