- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已成功使用 AccountManagement 代码检索基本 AD 信息,但它仅返回有关返回对象的非常有限的信息集。如何使用 AccountManagement 功能从 AD 获取扩展信息。具体来说,是我的 AD 实例中的职位名称或头衔。
我知道如何使用旧的 DirectoryServices 来做到这一点,但我想知道如何使用新的命名空间来做到这一点。
最佳答案
是的,UserPrincipal
上的默认属性集非常有限 - 但最重要的是:有一个简洁的可扩展性故事!
您需要定义一个从 UserPrincipal
派生的类,然后您可以根据需要轻松访问更多属性。
骨架看起来像这样:
namespace ADExtended
{
[DirectoryRdnPrefix("CN")]
[DirectoryObjectClass("User")]
public class UserPrincipalEx : UserPrincipal
{
// Inplement the constructor using the base class constructor.
public UserPrincipalEx(PrincipalContext context) : base(context)
{ }
// Implement the constructor with initialization parameters.
public UserPrincipalEx(PrincipalContext context,
string samAccountName,
string password,
bool enabled) : base(context, samAccountName, password, enabled)
{}
UserPrincipalExSearchFilter searchFilter;
new public UserPrincipalExSearchFilter AdvancedSearchFilter
{
get
{
if (null == searchFilter)
searchFilter = new UserPrincipalExSearchFilter(this);
return searchFilter;
}
}
// Create the "Title" property.
[DirectoryProperty("title")]
public string Title
{
get
{
if (ExtensionGet("title").Length != 1)
return string.Empty;
return (string)ExtensionGet("title")[0];
}
set { ExtensionSet("title", value); }
}
// Implement the overloaded search method FindByIdentity.
public static new UserPrincipalEx FindByIdentity(PrincipalContext context, string identityValue)
{
return (UserPrincipalEx)FindByIdentityWithType(context, typeof(UserPrincipalEx), identityValue);
}
// Implement the overloaded search method FindByIdentity.
public static new UserPrincipalEx FindByIdentity(PrincipalContext context, IdentityType identityType, string identityValue)
{
return (UserPrincipalEx)FindByIdentityWithType(context, typeof(UserPrincipalEx), identityType, identityValue);
}
}
}
这几乎就是全部了! ExtensionGet
和 ExtensionSet
方法允许您“深入”底层目录条目并获取您可能感兴趣的所有属性......
现在,在您的代码中,使用新的 UserPrincipalEx
类而不是 UserPrincipal
:
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// Search the directory for the new object.
UserPrincipalEx myUser = UserPrincipalEx.FindByIdentity(ctx, "someUserName");
if(myUser != null)
{
// get the title which is now available on your "myUser" object!
string title = myUser.Title;
}
}
在此处阅读有关 System.DirectoryServices.AccountManagement
命名空间及其可扩展性的所有内容:
更新:抱歉 - 这是 UserPrincipalExSearchFilter
类 - 错过了原始帖子中的那个类。它只是显示了扩展搜索过滤器的能力(如果需要):
public class UserPrincipalExSearchFilter : AdvancedFilters
{
public UserPrincipalExSearchFilter(Principal p) : base(p) { }
public void LogonCount(int value, MatchType mt)
{
this.AdvancedFilterSet("LogonCount", value, typeof(int), mt);
}
}
关于c#-4.0 - 使用 System.DirectoryServices.AccountManagement 获取职位名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540436/
我有一个数组 (propertyList),其中包含我要检索其数据的某些 Active Directory 属性的名称。使用 Ironpython 和 .NET 库 System.DirectoryS
我需要知道 AuthenticationTypes 中等效的 AuthType 值才能从 S.DS 迁移到 S.DS.P 代码。 我正在重写一个当前使用 System.DirectoryService
我正在尝试从 AD 获取 OU/DC 中所有用户的列表。 这就是我想出的: $erroractionpreference = "SilentlyContinue" function Get-Group
CS0234: The type or namespace name 'DirectoryServices' does not exist in the namespace 'System' (are
我有一个奇怪的 System.DirectoryServices 问题,它间歇性地弹出。 在下面的代码中定期抛出下面的异常 private PrincipalSearchResult GetA
我需要为我的 Intranet Web 应用程序创建一种方法,该方法将使用 DirectoryServices 针对默认域或用户指定的域对用户进行身份验证。 在我的登录表单上,用户将能够以 "user
我正在努力使用我公司的 AD 对用户进行身份验证。此代码有效,但需要超过 25-30 秒才能返回 DirectorySearcher 结果。我可以做些什么来改善它的响应时间? public bool
我们的用户存储区是一个名为eDirectory的LDAP服务器。如何使用System.DirectoryServices.Protocols更改用户密码? 最佳答案 我使用了与此类似的代码来连接到基于
当用户登录网站时,我使用下面的代码在事件目录中查找信息。针对本地域运行它非常快,但通过 VPN 运行到远程受信任的域时,它非常慢(大约需要 7 或 8 秒)。从同一个机器到远程域运行 dsa.msc
我是访问 Active Directory 的新手,有人建议我使用 System.DirectoryServices.AccountManagement但我找不到 initials变量有什么帮助吗?
我在这里使用代码:ASP.NET How to get List of Groups in Active Directory 具体来说: using System.DirectoryServices;
我一直在尝试找出如何取消System.DirectoryServices.Protocols中长期运行的AD搜索。有人可以帮忙吗? 我查看了RootDSE上的supportControl / supp
我在使用 Windows 身份验证的网站上收到错误消息。 奇怪的事情: 仅当用户尚未保存到数据库中时才会发生(新的未知用户) 只出现在live系统上,本地开发环境一切正常 这是我在日志邮件中得到的:
我们已经实现了一个向 Active Directory 进行身份验证的成员资格提供程序,并且它使用 System.DirectoryServices。当在带有 webdev 服务器的 Visual S
给定域用户的用户名和密码,以编程方式验证该用户的最佳方法是什么? 最佳答案 .NET 3.5 似乎添加了一个新的命名空间来处理此问题 - System.DirectoryServices.Accoun
我尝试在 ASP.Net MVC (C#) 项目中使用 DirectoryEntry 并收到以下错误: The type or namespace 'DirectoryServices' does n
以下 C# 代码 (.NET Framework 3.5) 返回 AD 组“xyz”的所有用户的名称和描述。只要它返回一些记录,它就可以很好地工作。但是,当它返回超过 100 条记录时,它会非常慢。任
我尝试在 ASP.Net MVC (C#) 项目中使用 DirectoryEntry 并收到以下错误: The type or namespace 'DirectoryServices' does n
我花了一天多的时间才发现 Principal 对象使用的带宽比使用 DirectoryServices 多得多。场景是这样的。我有一个包含约 3000 个计算机对象的组。为了检查计算机是否在此组中,我
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我是一名优秀的程序员,十分优秀!