文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>asp.net中用户验证同步AD域

asp.net中用户验证同步AD域

时间:2011-03-14  来源:钟凯

 

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Security.Principal; using System.Runtime.InteropServices;
public partial class windwos : System.Web.UI.Page {          protected void Page_Load(object sender, EventArgs e)         {                  UserLoginForDomain CheckUserLogin = new UserLoginForDomain();                  string txtUser = "" ;
                 string txtPassword = "" ;
                 string txtDomain = "" ;
                 if (Request.Form["txtUser" ] != null)                         txtUser = Request.Form[ "txtUser"].ToString();                  if (Request.Form["txtPassword" ] != null)                         txtPassword = Request.Form[ "txtPassword"].ToString();                  if (Request.Form["txtDomain" ] != null)                         txtDomain = Request.Form[ "txtDomain"].ToString();
                 if (txtUser != "" && txtPassword != "" && txtDomain != "")                 {                          if (CheckUserLogin.impersonateValidUser(txtUser, txtDomain, txtPassword))                                 Response.Write( " OK");                          else                                 Response.Write( "Error");                 }         }
         public class UserLoginForDomain         {                  public UserLoginForDomain()                 {                          //                          // TODO: 在此处添加构造函数逻辑                          //                 }
                 //【用户登录域】方法#region【用户登录域】方法
                 public const int LOGON32_LOGON_INTERACTIVE = 2;                  public const int LOGON32_PROVIDER_DEFAULT = 0;
                 WindowsImpersonationContext impersonationContext;
                [ DllImport("advapi32.dll" , CharSet = CharSet.Auto)]                  public static extern int LogonUser(String lpszUserName,                                                                                   String lpszDomain,                                                                                   String lpszPassword,                                                                                   int dwLogonType,                                                                                   int dwLogonProvider,                                                                                   ref IntPtr phToken);                 [ DllImport("advapi32.dll" , CharSet = System.Runtime.InteropServices.CharSet .Auto, SetLastError = true)]                  public extern static int DuplicateToken(IntPtr hToken,                                                                                   int impersonationLevel,                                                                                   ref IntPtr hNewToken);                  /**/                  /// <summary>                  /// 输入用户名、密码、登录域判断是否成功                  /// </summary>                  /// <example>                  /// if (impersonateValidUser(UserName, Domain, Password)){}                  /// </example>                  /// <param name="userName"> 账户名称,如: string UserName = UserNameTextBox.Text;</param>                  /// <param name="domain"> 要登录的域,如: string Domain   = DomainTextBox.Text;</param>                  /// <param name="password"> 账户密码, 如: string Password = PasswordTextBox.Text;</param>                  /// <returns> 成功返回true,否则返回 false</returns>                  public bool impersonateValidUser(String userName, String domain, String password)                 {                          WindowsIdentity tempWindowsIdentity;                          IntPtr token = IntPtr .Zero;                          IntPtr tokenDuplicate = IntPtr .Zero;
                         if (LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE,                         LOGON32_PROVIDER_DEFAULT, ref token) != 0)                         {                                  if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)                                 {                                         tempWindowsIdentity = new WindowsIdentity (tokenDuplicate);                                         impersonationContext = tempWindowsIdentity.Impersonate();                                          if (impersonationContext != null)                                                  return true ;                                          else                                                  return false ;                                 }                                  else                                          return false ;                         }                          else                                  return false ;                 }
                 public void undoImpersonation()                 {                         impersonationContext.Undo();                 }                  // #endregion         } }

<% @ Page Language="C#" AutoEventWireup="true" CodeFile="windwos.aspx.cs" Inherits="windwos" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title> 无标题页</title > </head> <body> <form action="windwos.aspx" method ="post">          用户名:< input runat ="server" id ="txtUser" name ="txtUser" />< br />          密码:< input runat ="server" id ="txtPassword" name ="txtPassword" />< br />          域:< input runat ="server" id ="txtDomain" name ="txtDomain" />< br />          <input type="submit" value="提交 " /> </form> </body> </html>
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载