我希望从用于访问我网页的用户帐户中获取域 SID,但是......
在某些情况下,不有权访问HttpContext对象以调用HttpContext.Current.Request.LogonUserIdentity.User.Value
所有静态函数都能够接受用户名作为字符串,域名作为字符串。
如果域保留为空,则可以确定用户帐户名与执行该进程的IIS服务器位于同一域中。 :/
您的帮助将一如既往地受到赞赏。 欢呼声。
答案 0 :(得分:1)
要获取用户的域名,您可以使用LookupAccountName。如果您需要pinvoke样本,请从pinvoke.net
获取您将DOMAIN\UserName
传递给该函数。 LookupAccountName
函数将返回用户SID和域名。
我怀疑你真的不需要知道域SID。我认为返回的域名应该足够了。如果您真的想知道域SID,可以直接从返回的用户SID中提取它。
用户SID始终以域SID开头。有关SID结构的外观以及如何提取域SID的详细信息,请查看here
答案 1 :(得分:0)
尝试使用目录服务?需要.Net 3.5:
public UserPrincipal GetUserPrincipal(string userName)
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, LDAPDomain, LDAPUser, LDAPPassword);
return UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName);
}
然后,您可以使用具有.Sid方法的UserPrincipal类。
我从web.config设置我的域名和AD帐户信息,如此
private String LDAPDomain
{
get
{
return ConfigurationManager.AppSettings["LDAPDomain"];
}
}