.NET中验证域用户名以及密码的方式,其本质是调用Windows API来获取得到当前系统的登录域、用户名、密码信息然后调用Windows API来验证就可以了。
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.Runtime.InteropServices;//必要引用
usingSystem.Security.Principal;//必要引用
/**////<summary>
///UserLoginForDomain的摘要说明
///适用ASP.NET2.0
///WindowsXP调试成功
///调用”advapi32.dll“win32API
///</summary>
publicclassUserLoginForDomain
{
publicUserLoginForDomain()
{
//
//TODO:在此处添加构造函数逻辑
//
}
【用户登录域】方法#region【用户登录域】方法
publicconstintLOGON32_LOGON_INTERACTIVE=2;
publicconstintLOGON32_PROVIDER_DEFAULT=0;
WindowsImpersonationContextimpersonationContext;
[DllImport("advapi32.dll",CharSet=CharSet.Auto)]
publicstaticexternintLogonUser(StringlpszUserName,
StringlpszDomain,
StringlpszPassword,
intdwLogonType,
intdwLogonProvider,
refIntPtrphToken);
[DllImport("advapi32.dll",CharSet=System.Runtime.InteropServices.CharSet.Auto,SetLastError=true)]
publicexternstaticintDuplicateToken(IntPtrhToken,
intimpersonationLevel,
refIntPtrhNewToken);
/**////<summary>
///输入用户名、密码、登录域判断是否成功
///</summary>
///<example>
///if(impersonateValidUser(UserName,Domain,Password)){}
///</example>
///<paramname="userName">账户名称,如:stringUserName=UserNameTextBox.Text;</param>
///<paramname="domain">要登录的域,如:stringDomain=DomainTextBox.Text;</param>
///<paramname="password">账户密码,如:stringPassword=PasswordTextBox.Text;</param>
///<returns>成功返回true,否则返回false</returns>
publicboolimpersonateValidUser(StringuserName,Stringdomain,Stringpassword)
{
WindowsIdentitytempWindowsIdentity;
IntPtrtoken=IntPtr.Zero;
IntPtrtokenDuplicate=IntPtr.Zero;
if(LogonUser(userName,domain,password,LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,reftoken)!=0)
{
if(DuplicateToken(token,2,reftokenDuplicate)!=0)
{
tempWindowsIdentity=newWindowsIdentity(tokenDuplicate);
impersonationContext=tempWindowsIdentity.Impersonate();
if(impersonationContext!=null)
returntrue;
else
returnfalse;
}
else
returnfalse;
}
else
returnfalse;
}
publicvoidundoImpersonation()
{
impersonationContext.Undo();
}
#endregion
ASP.NET中的网页调用代码:
【用户登录域】示例#region【用户登录域】示例
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default6.aspx.cs"Inherits="Default6"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title>ASP.NET模拟登录验证</title>
</head>
<body>
<formid="form1"runat="server">
<div>
账户:<asp:TextBoxID="UserNameTextBox"runat="server"></asp:TextBox><br/>
密码:<asp:TextBoxID="PasswordTextBox"runat="server"></asp:TextBox><br/>
域名:<asp:TextBoxID="DomainTextBox"runat="server"></asp:TextBox><br/>
<asp:ButtonID="OKButton"runat="server"OnClick="OKButton_Click"Text="Button"/></div>
</form>
</body>
</html>
=========================================================================
protectedvoidOKButton_Click(objectsender,EventArgse)
{
stringUserName=UserNameTextBox.Text;
stringDomain=DomainTextBox.Text;
stringPassword=PasswordTextBox.Text;
UserLoginForDomainCheckUserLogin=newUserLoginForDomain();
if(CheckUserLogin.impersonateValidUser(UserName,Domain,Password))
Response.Write(UserNameTextBox.Text+"isOK");
else
Response.Write(UserNameTextBox.Text+"isError");
}
#endregion
分享到:
相关推荐
1. **收集用户输入**:用户在登录界面(如`login.aspx`)上输入AD域用户名和密码。 2. **验证用户**:后端代码(如`login.aspx.vb`中的事件处理程序)捕获这些输入并使用`DirectoryEntry`实例连接到AD。通常,会创建...
在ASP.NET中实现用户域验证是一项重要的安全措施,它确保只有特定域内的用户才能访问应用程序或者执行特定操作。在这个场景中,我们将深入探讨如何使用ASP.NET在Visual Studio 2008中实现用户域验证。 首先,我们...
在这里,我们主要关注Forms Authentication,它是Web应用中最常用的身份验证方式,适用于非Windows域环境。 2. **配置身份验证**: 在Web.config文件中,通过设置`<authentication>`元素来选择和配置身份验证模式...
基本身份验证是 ASP.NET 中的一种身份验证方式,它要求用户提供用户名和密码来证明他们的身份。基本身份验证基于 Internet 标准 RFC 2617,所有常用浏览器都支持它。用户的凭据以 Base64 编码格式从浏览器传送到 Web...
总的来说,C#.NET中的域用户验证涉及到对Windows域的理解、DirectoryServices命名空间的使用,以及安全性最佳实践的遵循。在实际开发中,不仅要确保代码功能的正确性,还要关注性能和安全性,以保护系统的整体安全。
Asp.Net(C#)AD域验证WebService 解决方案里面提供两个方法,调用非常简单,方法三个参数:域服务地址+端口、用户名、密码;如果域服务器固定可以直接就爱那个第一个参数配置在Web.config中。
在IT领域,活动目录(Active ...以上就是关于"C#、.NET 读取AD域里用户名或组"的主要知识点,包括如何读取、创建、删除、移动用户和组,以及如何进行登录操作。这些技术广泛应用于企业级的系统集成和身份验证场景。
本文将深入探讨如何使用C#来读取AD域中的用户名和组。 首先,要与AD进行通信,我们需要使用System.DirectoryServices命名空间。这个命名空间包含了DirectoryEntry、DirectorySearcher等类,它们用于连接到AD服务器...
在这个项目中,我们使用的是Forms身份验证,它适用于非域环境,允许用户通过用户名和密码进行登录。 用户登录模块是系统的核心部分。在这个系统中,开发者会创建一个登录页面(通常命名为Login.aspx),用户输入...
ASP.NET Form验证主要涉及到Web应用程序中的用户身份验证过程,它是一种基于表单的身份验证机制,广泛应用于局域网和互联网环境。本篇文章将深入探讨Forms身份验证的基础、过程、实现登录与注销,以及如何保护受限制...
2. **基本身份验证**:使用用户名和密码进行验证,数据通过HTTP头传递,通常不适用于公共互联网,因为密码可能在传输过程中被截取。 3. **简要身份验证**:类似于基本身份验证,但密码经过哈希处理,适用于内部网络...
总结来说,".net c#域操作工具类"是C#编程中用于管理活动目录对象的重要工具,它简化了对域操作的代码编写,提高了开发效率,并且通过实践验证确保了操作的准确性。ADHelp.cs文件可能是实现这些功能的代码源,对理解...
2. **身份验证**:输入域用户名和当前密码进行身份验证。 3. **密码更改**:成功认证后,用户会被引导到更改密码的页面,按照提示输入新密码。 4. **确认**:用户确认新密码,系统会验证新密码是否符合域策略,...
通过上述方法,可以在ASP.NET应用中实现基于AD域的身份验证,这对于企业级应用的安全性和用户体验至关重要。开发者需要关注代码的安全性和健壮性,确保在各种情况下都能正确处理登录请求,并为用户提供友好的交互...
这个类允许我们设置用户名、密码和域名,以便在访问受保护的网络资源时进行身份验证。以下是一个简单的示例: ```csharp using System.Net; using System.IO; string sharePath = "\\\\server\\share"; string ...
域用户登录是通过活动目录服务实现的,它允许用户在域内的任何一台计算机上使用相同的用户名和密码进行登录。这个过程涉及到客户端计算机与域控制器之间的通信,包括身份验证和授权两个主要步骤。身份验证确保用户的...
域用户是AD环境中的成员,他们的凭证(用户名和密码)用于验证访问权限。 接下来,我们要关注的是如何实现网页修改密码的功能。这里,我们可以利用名为"IISADMPWD"的工具,这是一个由Microsoft开发的小型Web应用...
在IT领域,特别是企业级应用开发中,"C# AD域验证"是一个常见的主题,它涉及到Windows活动目录(Active Directory, AD)与C#编程语言的集成。活动目录是Microsoft提供的一种目录服务,用于管理网络资源,如用户、...