AD域账号验证
public partial class _Default : Page
{
[DllImport("advapi32.dll")]
private static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
protected void Page_Load(object sender, EventArgs e)
{
lblLocaAdAccount.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
}
protected void btnSave_Click(object sender, EventArgs e)
{
string strDomain = txtDomain.Text.Trim();
string strUserName = txtUserName.Text.Trim();
string strPassWord = txtPassWord.Text.Trim();
lblMsg.Text = "验证中…";
bool isAccount = ValidateUserAccount(strDomain, strUserName, strPassWord);
if (isAccount)
{
lblMsg.Text = "合法用户";
}
else {
lblMsg.Text = "非法用户";
}
if (isAccount)
{
//完全采用域用户来管理
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // version
strUserName, // user name
DateTime.Now, // issue time
DateTime.Now.AddHours(1), // expires every hour
false, // don't persist cookie
"" // roles
);
FormsAuthentication.SetAuthCookie(strUserName, false);
}
}
/// <summary>
/// 域验证
/// </summary>
/// <param name="AstrDomainName">域名称</param>
/// <param name="AstrDomainAccount">域账号</param>
/// <param name="AstrDomainPassword">域密码</param>
/// <returns></returns>
public bool ValidateUserAccount(string AstrDomainName, string AstrDomainAccount, string AstrDomainPassword)
{
const int LOGON32_LOGON_INTERACTIVE = 2; //通过网络验证账户合法性
const int LOGON32_PROVIDER_DEFAULT = 0; //使用默认的Windows 2000/NT NTLM验证方
IntPtr tokenHandle = new IntPtr(0);
tokenHandle = IntPtr.Zero;
string domainName = AstrDomainName; //域 如:officedomain
string domainAccount = AstrDomainAccount; //域帐号 如:administrator
string domainPassword = AstrDomainPassword;//密码
bool checkok = LogonUser(domainAccount, domainName, domainPassword, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref tokenHandle);
return checkok;
}
}
=======================================================================
其他参考代码 ===============================================================
=======================================================================
WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent();
WindowsPrincipal currentPrincipal = new WindowsPrincipal(currentIdentity);
bool isDomainUser = currentPrincipal.IsInRole("Domain Users");
isDomainUser=true; //为域用户
string userName=System.Environment.UserName; //获取计算机登录名称
string computerName=System.Environment.MachineName;//获取计算机名称
string computerName=Dns.GetHostName();
AD域账号验证的更多相关文章
- AD域登录验证
AD域登录验证 作者:Grey 原文地址:http://www.cnblogs.com/greyzeng/p/5799699.html 需求 系统在登录的时候,需要根据用户名和密码验证连接域服务器进行 ...
- 使用Novell.Directory.Ldap.NETStandard在.NET Core中验证AD域账号
Novell.Directory.Ldap.NETStandard是一个在.NET Core中,既支持Windows平台,又支持Linux平台,进行Windows AD域操作的Nuget包. 首先我们 ...
- AD 域账号登录
域服务数据读写,有俩种模式 1.轻量级的数据读取 _domain是服务器的域名 获取连接PrincipalContext pc = new PrincipalContext(ContextType.D ...
- .Net C#域账号登陆验证
//获取登陆页输入的域账号.密码 string domainIP = ""; //域IP string userAccount = ""; //域账号 stri ...
- JAVA 通过LDAP获取AD域用户及组织信息
因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...
- Python实现AD域认证
Python 通过ldap进行ad域账号的校验. 首先需要安装python-ldap的模块 http://www.python-ldap.org/. 在这里用的是windows系统,当然比较容易,下载 ...
- Linux AD 身份统一验证(SSO)
http://www.toxingwang.com/linux-unix/linux-admin/584.html Linux+samba-winbind+AD实现统一认证 2013年04月27日 ⁄ ...
- Samba通过ad域进行认证并限制空间大小《转载》
本文实现了samba服务被访问的时候通过windows域服务器进行用户名和密码验证;认证通过的用户可以自动分配500M的共享空间;在用户通过windows域登陆系统的时候可以自动把这块空间映射成一块硬 ...
- svn+http+ad域
svn本地添加用户太麻烦了,如果公司有一百个开发人员要访问,要创建账号密码太麻烦了:所以让他们用AD域账号去登录就很方便,但是权限的管控还是在svn的本地添加(这个暂时还没办法很好的解决) 一.安装依 ...
随机推荐
- HDU 6395(2018多校第7场1010)Sequence
不久前做过POJ3070,所以知道这题要用矩阵快速幂优化,但是这个题的递推公式中有一项⌊p/n⌋,场上就不会了... 下来才知道要用分块矩阵快速幂,因为⌊p/n⌋最多有2√p块,可以对每一块使用快速幂 ...
- 使用zookeeper实现服务路由和负载均衡
三个类: ServiceAProvider ServiceBProvider ServiceConsumer 其中 ServiceAProvider提供的服务名service-A,指向IP为192.1 ...
- C语言中的static的作用?
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)第一个作用:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话 ...
- R: 关于 ggplot2 的初探
生活还很长,别急,慢慢来.亲爱的 require(ggplot2)p1 <- ggplot(mpg, aes(displ, hwy)) + geom_point() ; p1p1 + scale ...
- HDU 5038 Grade (水题,坑题)
题意:给 n 个数,输出众数,但是如果所有的频率都相同但数不同输出 Bad Mushroom. 析:直接记录个数直接暴力就,就是要注意只有一种频率的时候. 代码如下: #pragma comment( ...
- VS2012,更新补丁后--创建项目未找到与约束匹配的导出
更新过一次漏洞,后来尝试建立一个项目,结果错误终于暴露了,创建项目时无法成功创建,而且提示:未找到与约束ontractNameMicrosoft.VisualStudio.Text.ITextDocu ...
- Java50道经典习题-程序31 数组逆序
题目:将一个数组逆序输出.分析:用第一个与最后一个交换. public class Prog31 { public static void main(String[] args) { //遍历原始数组 ...
- C#中如何防止Excel做科学计算法转换
C#中如何防止Excel做科学计算法转换 string style = @"<style>.text{mso-number-format:\@;}</style>& ...
- c# 时间格式处理,获取格式: 2014-04-12T12:30:30+08:00
C# 时间格式处理,获取格式: 2014-04-12T12:30:30+08:00 一.获取格式: 2014-04-12T12:30:30+08:00 方案一:(局限性,当不是当前时间时不能使用) ...
- linux 学习文档
1.nginx中文文档 http://www.nginx.cn/doc/