asp.net MVC表单用于基于声明的身份验证的身份验证



我们使用Gigya对用户进行身份验证,这将为我们提供用户Id和电子邮件。然后我们将用户详细信息传递给我们的CRM Web服务,该服务将从CRM返回用户数据。

然后,我们需要为用户创建一个会话,以便识别用户是否登录。如果未登录,则重定向到Gigya进行登录/注册等。

现在,考虑到我们没有使用任何ASP.NET Membership或类似功能,我正在考虑如何保护成员页面。我可以想到的一种方法是将用户详细信息存储在会话中。然后检查会话中是否存在用户详细信息,如果不存在,则提示登录。

我也在考虑是否:

  1. 我可以使用FormsAuthentication.SetAuthCookie或类似的方法创建asp.net会话

  2. 或者有更好的方法来实现这一点。

此外,如果我使用FormsAuthentication.Logout,即使我没有使用asp.net会员服务提供商,它会清除我的所有会话和cookie吗?

目标:

  1. 能够为用户创建会话
  2. 能够根据我们从CRM获得的用户角色授权用户
  3. 点击Lout按钮即可注销用户

首先,从安全角度来看,这非常非常重要。

身份验证!=一场

它们是不同的概念。第二,

切勿使用SESSION进行身份验证

参见第一条规则。FormsAuthentication什么都没有。零齐奇。纳达。与会话管理有关。它也与会员资格或证书验证无关。它所做的只是存储一个cookie,ASP.NET可以对其进行解码,以验证用户是否已通过身份验证。此cookie由应用程序在验证用户凭据后设置。

FormsAuthentication.Logout()不清除会话,因为正如我已经说过的,它们彼此无关。您必须通过调用Session.Abandon()来清除会话。

会话是为用户存储数据的,不安全。会话是不稳定的,IIS可以在任何时候出于任何原因丢弃它。从请求到下一个请求,您不能依赖会话。

身份验证是加密的,严格来说是为了证明用户已经过身份验证。

身份验证可以超越会话。它可以持续数小时、数周、数月。。。您的会话只适用于您当前所在的时间(如果IIS没有提前终止它)。

最新更新