HttpContext.Current.User.Identity.Name如何工作?它有多安全?

时间:2012-11-16 10:07:22

标签: c# asp.net security iis

我正在使用 HttpContext.Current.User.Identity.Name 来获取登录用户的用户名。我想知道这是如何工作的(使用NTLM v2 / Kerberos)以及它有多安全?用户可以尝试模仿他是别人吗?

基本上,从安全的角度来看,我应该担心什么,或者我应该如何改进它?

1 个答案:

答案 0 :(得分:4)

如果您使用Windows身份验证进行身份验证(如果您提到NTLM / Kerberos,则表明您的身份),那么(大致)如下所示

  • IE向您的网络服务器发送没有身份验证标头的请求。
  • IIS使用401响应代码拒绝该请求,并告诉浏览器它想要的身份验证方案(在这种情况下是Negotiate,它先尝试Kerberos,然后再回到NTLM)
  • 通过多个连接进行路缘握手,并根据AD
  • 验证故障单
  • IIS将票据传递给ASP.NET,ASP.NET在构建Request对象的过程中使用票证中的身份详细信息填充分配给请求的线程上的主体。
  • 当您访问HttpContext.User时,您会看到当前线程的主体。

这很安全。当您通过文件共享或使用kerberos的任何其他内容连接到Windows服务器时,它基本上使用相同的身份验证类型。实际上,IIS和Windows本身正在完成大部分工作,ASP.NET只是为您提供了查询结果的好方法。