C# MVC活动目录成员资格

C# MVC活动目录成员资格,c#,model-view-controller,activedirectorymembership,C#,Model View Controller,Activedirectorymembership,我试图使用active directory成员身份而不是SQL,但在线可用的文档非常有限。我已经成功地将我的应用程序连接到域控制器,没有任何问题,但是当您使用“Context.User.Identity.Name”时,它会显示domain\User。我想基本上深入了解并获取诸如全名、电子邮件地址等信息 我只需要一个有用的链接和搜索我做了似乎没有得到我任何地方 非常感谢您试过这个医生吗 有什么帮助吗?这会给你一些线索: 下面是您可能希望在搜索结果中使用的LDAP属性列表:如果您使用的是Activ

我试图使用active directory成员身份而不是SQL,但在线可用的文档非常有限。我已经成功地将我的应用程序连接到域控制器,没有任何问题,但是当您使用“Context.User.Identity.Name”时,它会显示domain\User。我想基本上深入了解并获取诸如全名、电子邮件地址等信息

我只需要一个有用的链接和搜索我做了似乎没有得到我任何地方


非常感谢

您试过这个医生吗


有什么帮助吗?

这会给你一些线索:
下面是您可能希望在搜索结果中使用的LDAP属性列表:

如果您使用的是Active Directory,则可能使用Windows身份验证。如果是这样,您需要做的就是:

  • 参考
    System.DirectoryServices.AccountManagement

  • 在代码中(可能是控制器操作或模型构造函数)

    //将域建立为用户查找的上下文 var principalContext=新的principalContext(ContextType.Domain,“域名”)

    //获取当前用户的UserPrincipal对象 var userPrincipal.FindByIdentity(principalContext,@User.Identity.Name)

    //范例 var email=userPrincipal.EmailAddress

  • 注:
    • 这是因为Windows身份验证意味着当前
      HttpContext
      上的
      User.Identity
      是一个
      WindowsIdentity
      ,因此其
      Name
      属性可用于搜索广告

    • 您不限于查找当前用户。您可以使用
      FindByIdentity()
      搜索传递的任何值,此方法存在于其他主体(例如GroupPrincipal)上。您还可以指定希望通过另一种类型(如SID)而不是名称进行搜索


    享受吧

    我真的需要创建一个到DC的新连接来获取我想要的信息吗?我曾希望web.config文件中的信息足以满足这一要求。。。您能否确认我是否需要创建到DC的新连接以获取所需信息。如果您想从AD获取其他属性,您需要执行此操作。这就是我在开发内联网web应用程序时所做的,它是经过身份验证的,而不是AD。我不确定是否还有其他方法。也许其他人可能知道。我使用system.DirectoryServices.AccountManagement类(yay)找到了一些东西-您必须传递用户名,并且可以收集所需的任何参数:使用(var user=UserPrincipal.FindByIdentity(context,“username”){return user.DisplayName;}-这是一点额外的工作,但至少它是有效的!酷,我没用过那个。他们一定是在我不得不做任何事情(w/AD:)之后添加的。谢谢分享。