我正在开发一个内部网站,该网站直接从Windows身份验证获取用户名,然后从以下功能获取更多来自活动目录的数据,如用户图像和用户电子邮件等
public Boolean userAuth()
{
String myUser = Environment.UserName;
if (myUser == null)
{
return false;
}
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://mydomain.com";
DirectorySearcher search = new DirectorySearcher();
search.Filter = "(SAMAccountName=" + myUser + ")";
search.PropertiesToLoad.Add("cn");
search.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" +myUser + "))";
search.PropertiesToLoad.Add("samaccountname");
search.PropertiesToLoad.Add("thumbnailPhoto");
search.PropertiesToLoad.Add("Company");
SearchResult user;
user = search.FindOne();
String userName;
userName = Convert.ToString(user.Properties["sAMAccountName"][0]);
byte[] bb = (byte[])user.Properties["thumbnailPhoto"][0];
string imgString = Convert.ToBase64String(bb);
Session["UserPhoto"] = String.Format("<img width='40' src=\"data:image/Bmp;base64,{0}\">", imgString);
result = search.FindOne();
if (null == result)
{
return false;
}
return true;
}
当我在我的本地电脑上运行该网站时,我的电脑连接到域它工作正常,但当我把它放在公司应用服务器
Environment.UserName
不会返回用户名,因此我使用System.Web.HttpContext.Current.User.Identity.Name.Replace("mydomain","")
但它会返回用户 null
我想从AD获取用户照片以在Intranet站点中使用它。
答案 0 :(得分:0)
我在iis应用程序池预先设置中找到了答案,将进程模块标识设置为已经在域中的用户