具体问题:
>我们如何处理加密和非加密通信?显然,我们需要使用HTTPS进行登录,帐户和结帐AJAX,但是我们希望使用HTTP浏览目录,以避免昂贵的SSL握手,从而减慢整个网站的浪费.这甚至可能是SPA,还是我们坚持HTTPS的一切?
>我们应该使用什么样的认证?首先我们的网站将通过网络浏览器访问,所以cookies可能会很好.但在路上,我们可能想制作一个定制的iPhone应用程序.是基本认证,OpenId还是OAUTH?如果是这样,为什么?
>如果我们与Forms Auth和cookies一起去,那么redirect issue是否修复了MVC 4的发布,还是要使用haack?
>如果我们使用基本身份验证,您如何执行持久性会话,以便用户不必每次再次访问该页面时登录.
>哪些身份验证方法得到ASP.NET MVC 4的良好支持.理想的是不必编写大量专门的代码.
提前致谢
解决方法
你没有坚持一个协议.使用水疗中心,您可以使用ajax通过http或https进行通信,无论您在任何时候选择哪一个.我会随时使用https,发送敏感信息,如姓名或其出生日期或登录凭据.
一旦用户通过https登录到您的站点,那么您的服务器可以为该用户设置一个表单验证cookie.该cookie应该是将其会话与服务器相关联的加密值.您必须注意,如果您的网站的其余部分使用http,那么您有风险以纯文本形式传递该cookie.即使cookie的内容可以加密,使用您选择的加密算法,恶意人员可以窃取此cookie并插入用户的会话.
这可能不是一件大事,但如果只允许浏览网站并创建购物车.一旦用户准备好检出,那么您应该重新认证用户,通过https,作为一种双重检查,以确保它们不是恶意用户.亚马逊做这个
我们应该使用什么样的认证?
那么这就是你希望你的网站有什么功能的问题.
OAuth用于公开Web服务,您可以允许其他站点通过委派访问进行调用.这意味着,如果您有一个用户想要另一个站点(站点x)能够访问您网站上的功能以用于其配置文件.站点x可以将用户重定向到您站点上的oauth端点,该端点将验证用户.您的oauth端点会询问用户是否可以将某些功能与站点x共享,并且如果用户同意令牌将被生成.用户将此令牌传递到站点x,其中站点x将使服务器到服务器对您的站点进行调用.站点x将在呼叫中呈现令牌,因此对您的服务的呼叫将是委派的访问调用. OAuth是一种配置其他站点以使委托访问您的服务的方式.我希望我能够清楚地解释这一点..我并不总是这样.
OpenID不是一种非常安全的方式来处理身份验证,更方便用户,无需在您的网站上注册一个帐户.由于OpenID完全开放,您信任另一个提供商来验证您的用户.如果第三方提供商的用户商店遭到入侵,那么您的用户也遭到入侵.这是一个凭证系统的例子,您基本上会说我会信任您说的是,如果您可以为您提供OpenID提供商.
另一个解决方案是WS-Federation. WS-Federation如果您有多个站点,并且希望拥有您信任的1个身份验证提供程序.这个认证提供商可以是你的,基本上你所有的网站都说如果你想要访问我的网站,那么你必须先验证我的认证提供商.此认证提供程序可以生活在一个单独的域上,并可以选择其选择的任何身份验证机制.您相信此认证服务提供商将尽最大努力管理您的用户帐户.
如果您只想要在您的网站上进行身份验证,并且没有多个网站,那么WS-Federation可能会被杀死.在这种情况下,我只是建议进行表单验证,这应该很简单.有很多例子,如何做到这一点,微软提供了许多解决方案如何做到这一点.您应该研究创建一个自定义会员提供程序.
一旦用户对您的站点进行了身份验证,您应该创建一个forms authentication cookie.该cookie将用户与服务器上的会话相关联.这适用于上述所有情况. MVC 4也支持上述所有情况.
谢谢,如果我不够清楚,请随时问更多的问题.