我正在构建一个网站,它将充当持久服务器进程的客户端。 ASP.NET将使用.NET Remoting与服务器通信。服务器也被其他客户端使用(密集的WPF客户端和自动化进程),并且已经有基于密码的身份验证,授权和会话的方法。我打算构建它的方法是要求所有页面都使用ASP.NET会话,并将远程对象保留在服务器端会话状态中,该状态对应于后端服务器中的会话。我将构建一个登录页面,将凭据传递给远程会话对象,该对象将跟踪会话的身份验证状态。我希望所有这些都是有道理的。两个问题:
仅依靠ASP.NET会话确保请求经过身份验证是否安全,或者我是否还需要在此基础上添加一些身份验证cookie?该网站将包含敏感材料,所有网页都需要HTTPS,因此会话密钥不应该被第三方接收(至少不比认证cookie更多)。
如何将其与ASP.NET身份验证基础结构相结合?具体来说,如果服务器认为会话已经过身份验证,并且Page.User主体用于描述当前经过身份验证的用户,我希望HttpRequest.IsAuthenticated为true,再次从服务器上看。
由于
答案 0 :(得分:1)
ASP.Net Forms身份验证将完成您所需的一切。
首先,它会为您设置安全的身份验证Cookie,因此您无需担心这一点。它与任何其他基于会话的身份验证令牌一样安全(换句话说,它对会话劫持开放,但在其他方面被认为是安全的),但由于您使用的是HTTPS,因此无法执行会话劫持,因此您可以安全地使用
成功执行FormsAuthentication时,HttpRequest.IsAuthenticated将为true。您可能需要编写一个自定义MembershipProvider,它将对您的用户存储进行身份验证,获取用户名和后端会话对象,并在身份验证成功时将它们存储到会话中。编写自定义提供程序非常简单,有许多很好的示例可以涵盖您需要的内容。