首页 文章

ASP.Net MVC 2身份验证(登录)最佳实践

提问于
浏览
0

我正在开发一个ASP.Net MVC 2应用程序作为SalesForce.com中的复合应用程序 . 对于那些不熟悉SalesForce.com的人来说,它是互联网上的CRM平台 . 复合应用程序的简单内容显示在单独选项卡中的iframe内 . 因此,当用户登录salesforce.com时,用户会看到一堆标签 . 当用户单击我的应用程序选项卡时,我的应用程序可用 . 然后SalesForce.com将url传递给我的应用程序salesforce的会话ID,我可以使用它来访问salesforce数据,而无需用户登录 . 我可能会丢失很多用户,他们只会说:“嘿,这是salesforce.com具体问题问他们“ . 嗯,我认为这不是特定于销售人员的 .

好的继续,人们建议ASP.Net MVC 2身份验证应该保存在用户客户端计算机上的cookie中 . 所以基本上我将用户的id保存在cookie中然后如果我需要有关用户的信息我只是检索它 . 在我的情况下,我看到两个问题:1 . 我经常使用客户端的信息,所以我不想每次查询salesforce.com . 在cookie中序列化和加密用户信息是一个好主意吗?用户信息也是一个具有两个对象属性的对象:一个包含一堆用于描述salesforce用户的基元和枚举,另一个包含一堆用于在本地应用程序中描述用户的基元和枚举 . 2.我的应用程序在iframe中运行,据我所知,在用户的计算机上存储cookie会有问题 . 我不确定这是否属实 . 此外,当用户退出salesforce时,我的cookie应该从用户的计算机中失效/删除 .

我现在正在做的是我在会话中存储所有用户信息,而不涉及cookie . 我只是想不通为什么这是一个坏主意 . 我的意思是我已经阅读了有关会话劫持和会话到期的信息 .

但是在会话劫持方面,如果我在cookie中加密和存储用户的id并将用户的对象保留在缓存中,并且有人窃取了某人获取缓存的会话并且使用户的对象正确吗?

在会话到期方面,必须有一种方法来处理,我不确定它是如何完成的,但我知道它可以在ASP.Net中完成 . 可能坚持SQL服务器 .

任何有关在当前上下文中记住ASP.net MVC 2中的身份验证的最佳实践(记住我的应用程序是iframe)的任何帮助都将非常感激 .

此致,科斯

1 回答

  • 0

    我不确定ASP.Net MVC 2如何在没有任何cookie的情况下维护会话,所以我是机器,它会在每次请求时传递给服务器以获取实际的缓存用户信息和其他会话信息 . 如果是这种情况,我建议让Salesforce将生成的SFDC子会话ID发送到iframe,然后将其存储在ASP会话中 . 对于后续调用,唯一可能来回传递给您的服务器的是轻量级ASP会话ID,然后您可以使用它来访问SFDC会话ID和其他信息 .

    对于用户注销时杀死ASP会话的要求,没有很好的方法直接执行此操作(即注销时没有挂钩),但由于生成的传递给iframe的SFDC会话ID是小孩在UI会话中,当用户注销时,它应该无效 . 这意味着您的应用程序将无法再访问SFDC,但如果您还想要终止ASP会话,则可以通过验证SFDC会话来验证每个请求的ASP会话(发送一个简单的API调用,如getServerTimestamp()并且如果你想要更积极,你可以轮询SFDC以查看会话是否每n分钟仍然有效 .

相关问题