C# 使用备用UPN后缀验证AD用户
此问题可能与链接处的问题间接匹配 我正在为公司使用的基于Asp.NET4.0的网站项目工作 网站上有一个表单,要求用户输入默认选择域名的广告用户名和密码 我知道通过根域名验证用户身份的方法。但有些用户的域名(UPN后缀)已被修改 例如域名是xyz.com。因此,用户通过user@xyz.com及其密码。但对于一些用户来说,他们的名字是user@abc.comC# 使用备用UPN后缀验证AD用户,c#,asp.net,active-directory,C#,Asp.net,Active Directory,此问题可能与链接处的问题间接匹配 我正在为公司使用的基于Asp.NET4.0的网站项目工作 网站上有一个表单,要求用户输入默认选择域名的广告用户名和密码 我知道通过根域名验证用户身份的方法。但有些用户的域名(UPN后缀)已被修改 例如域名是xyz.com。因此,用户通过user@xyz.com及其密码。但对于一些用户来说,他们的名字是user@abc.com 那么如何使用根域名以外的可选UPN后缀验证此类用户?如果第一次尝试失败(使用默认域名),请使用域名选项显示表单 或者,提供提前填写的域名文
那么如何使用根域名以外的可选UPN后缀验证此类用户?如果第一次尝试失败(使用默认域名),请使用域名选项显示表单 或者,提供提前填写的域名文本框,用户可以根据需要修改 当身份验证失败时,请确保向他们显示一条消息,表明他们需要注意您显示的域名 更新:
private void AuthenticateUser(string loginID, string pwd) {
var search = new DirectorySearcher(m_rootDir);
if (-1 < loginID.IndexOf("@")) {
search.Filter = "(&(objectClass=user)(SAMAccountName=" + loginID + "))";
} else { // this is their Common Name
search.Filter = "(&(objectClass=user)(cn=" + loginID + "))"; // Get User By Full Name
}
// more code here
}
private void AuthenticateUser(字符串loginID,字符串pwd){
var search=newdirectorysearcher(m_rootDir);
如果(-1
通过大量的点击和试用方法搜索,我能够合理地制定解决方案
下面的链接值得一提。请从那里获取iUPN和eUPN的详细信息
我将再次解释我的问题陈述作为一个场景,以使其更加清晰
脚本
- Anil@domain.com成功登录
- Alex@dummy.com无法登录
/// <summary>
/// Get sAMAccountName for matching UserPrincipalName (UPN)
/// </summary>
/// <param name="domain">Domain name</param>
/// <param name="userName">Username</param>
/// <returns></returns>
protected string GetSamUsername(string domain, string userName)
{
string samName;
using (var pc = new PrincipalContext(ContextType.Domain, domain))
{
var user = UserPrincipal.FindByIdentity(pc, userName); // Search for this user
if (user == null) return null; // If user is not there, why go forward
samName = user.SamAccountName;
}
return samName;
}
//
///获取匹配UserPrincipalName(UPN)的sAMAccountName
///
///域名
///用户名
///
受保护的字符串GetSamUsername(字符串域、字符串用户名)
{
字符串samName;
使用(var pc=new PrincipalContext(ContextType.Domain,Domain))
{
var user=UserPrincipal.FindByIdentity(pc,用户名);//搜索此用户
if(user==null)返回null;//如果用户不在那里,为什么要继续
samName=user.SamAccountName;
}
返回samName;
}
(2)现在任何用户都可以登录
它还帮助我们在广告中验证用户的存在。我在dropdownlist中向他们显示域名(默认选择的域名)。但对于UPN不是域名的用户呢。有一些用户user@xyz.com. 并成功地对其进行了身份验证。因为实际上存在相同的域名。但对于具有user@abc.com. 实际上没有这样的域名。那么如何验证这些用户。我不确定你是如何验证的。使用
user@abc.com
存在于Active Directory帐户中,用户位于user@xyz.com
?如果没有,则需要专门调用abc.com Active Directory服务器或将其添加到xyz.com Active Directory服务器。不管怎样,abc.com的用户都不会喜欢使用多个密码。是的!两个用户都存在于同一个广告中,但其中一个用户具有可选后缀。