仅从域用户名(c#)获取SecurityIdentifier(SID)

仅从域用户名(c#)获取SecurityIdentifier(SID),c#,.net,asp.net,security,active-directory,C#,.net,Asp.net,Security,Active Directory,我希望从用于访问我的网页的用户帐户获得域SID,但是 在某些情况下,您无权访问HttpContext对象来调用HttpContext.Current.Request.LogonUserIdentity.User.Value 静态函数只能接受用户名作为字符串,域名作为字符串 如果域保留为空,则用户帐户名与正在执行进程的IIS服务器位于同一个域内,这很有趣:/ 我们将一如既往地感谢您的帮助。 干杯。尝试使用目录服务?为此需要.Net 3.5: public UserPrincipal GetUser

我希望从用于访问我的网页的用户帐户获得SID,但是

在某些情况下,您无权访问HttpContext对象来调用
HttpContext.Current.Request.LogonUserIdentity.User.Value

静态函数只能接受用户名作为字符串,域名作为字符串

如果域保留为空,则用户帐户名与正在执行进程的IIS服务器位于同一个域内,这很有趣:/

我们将一如既往地感谢您的帮助。
干杯。

尝试使用目录服务?为此需要.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中设置我的域和广告帐户信息,如下所示

private String LDAPDomain
    {
        get
        {
            return ConfigurationManager.AppSettings["LDAPDomain"];
        }
    }

尝试使用目录服务?为此需要.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中设置我的域和广告帐户信息,如下所示

private String LDAPDomain
    {
        get
        {
            return ConfigurationManager.AppSettings["LDAPDomain"];
        }
    }

要获取用户的域,可以使用。如果你需要一个pinvoke样品,从

DOMAIN\UserName
传递给函数。
LookupAccountName
函数将返回用户SID和域名

我怀疑您实际上不需要知道域SID。我认为返回的域名对你来说应该足够了。如果您确实想知道域SID,可以直接从返回的用户SID中提取它


用户SID始终以域SID开头。有关SID结构的外观以及如何提取域SID的详细信息,请选中

以获取用户的域,您可以使用。如果你需要一个pinvoke样品,从

DOMAIN\UserName
传递给函数。
LookupAccountName
函数将返回用户SID和域名

我怀疑您实际上不需要知道域SID。我认为返回的域名对你来说应该足够了。如果您确实想知道域SID,可以直接从返回的用户SID中提取它


用户SID始终以域SID开头。有关SID结构的外观以及如何提取域SID的详细信息,请检查HttpContext.Current有时会为空,但具体是什么时候遇到这个问题的?这是一个库函数,应该能够在不存在HttpContext的情况下使用。HttpContext.Current有时会为null,但具体是什么时候遇到这个问题的?这是一个库函数,应该能够在不存在HttpContext的情况下使用