C# 设置SSL vs使用DLL进行身份验证登录
目前,我们有以下情况: 首先,有一个web应用程序,当用户需要登录web应用程序时,用户将提供其帐户用户名和密码 用户名和密码将使用以下代码通过AD进行身份验证:C# 设置SSL vs使用DLL进行身份验证登录,c#,asp.net,session,ssl,active-directory,C#,Asp.net,Session,Ssl,Active Directory,目前,我们有以下情况: 首先,有一个web应用程序,当用户需要登录web应用程序时,用户将提供其帐户用户名和密码 用户名和密码将使用以下代码通过AD进行身份验证: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.DirectoryServic
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
namespace Access
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, txtboxDomain.Text))
{
bool isValid = pc.ValidateCredentials(txtboxUsername.Text, txtboxPassword.Text);
if (isValid == true)
{
lblLogin.Text = "VALID";
Session["Person"] = txtboxUsername.Text;
Session.Timeout = 1;
}
else
{
lblLogin.Text = "INVALID";
}
}
}
}
}
然而,一位同事“a”提到上述方法根本不安全
她提供的理由如下:
- IIS上没有SSL设置
- 即使IIS上没有SSL设置,至少也要使用IT部门的安全DLL文件来提供身份验证方法
那么,我可以知道我的同事A在多大程度上是正确的还是我的同事B是正确的吗?为了证明Wireshark是您唯一需要的工具 只需配置一个过滤器,以捕获通过端口443发送到web服务器的数据包,然后向下搜索它们
先发布没有HTTPS的表单(端口80),然后比较两者。最安全的方法是使用集成的Windows身份验证,这样用户甚至不必输入密码
在上面没有SSL的代码中,密码将以明文形式从客户端的浏览器发送到Web服务器。可以将明文用户名和密码发送到Active Directory。如果上面的配置加密了从Web服务器到LDAP服务器的连接(或者只使用Wireshark之类的数据包嗅探器),则必须检查.NET文档对于pc.ValidateCredentials.SSL提供了传输安全性,这与AD查询完全无关。但用户名和密码在局域网内以明文形式传输,可以使用网络嗅探器轻松实现。那么,这是否意味着我的两位同事都错了?(或者可能部分正确?)可能是您的同事A担心您可能正在通过网络发送未加密的用户凭据。这就是为什么有人建议使用SSL。我还建议您使用SSL。为什么您浪费时间,不配置IIS来执行Windows身份验证(SPNEGO)?在您的情况下,您没有SSL,所以只需在端口80上发布表单,并在wireshark中检查结果。