需要快速帮助。
我使用LDAP进行身份验证,
我想知道如何获取域的所有UPN别名&来自UPN别名的域名,
他们有什么方法可以得到这个。
请帮忙!
答案 0 :(得分:1)
您实际上可以从配置树中通过LDAP从AD读取这些值。
如果您阅读以下对象:
CN=Partitions,CN=Configuration,DC=your,DC=domain,DC=com
将包含名为uPNSuffixes
的属性。
此属性仅包含额外的后缀而不是默认值(我猜你必须从域名本身获取)。
规则是,如果uPNSuffixes
属性不可用,则只有默认的UPN后缀有效。
编辑:一个简单的例子是:
public List<String> getUpnSuffixes( LdapContext ctx, String domainName )
{
// Domain name should be in DC=you,DC=domain,DC=com format
String domConfig = "CN=Partitions,CN=Configuration," +domainName ;
List<String> names = new ArrayList<String>();
// Dirty hack to get the default suffix
names.add( domainName.replaceAll( "DC=", "" ).replaceAll( "," , "." );
// Read the configuration
Attributes attrs = ctx.getAttributes( domConfig , new String[] { "uPNSuffixes" } );
Attribute attr = attrs.get( "uPNSuffixes" );
for ( int i=0; i<attr.size(); i++ )
{
names.add( attr.get(i) );
}
// Now you have all the suffixes in the "names" list.
return names;
}
请注意,您可能必须为ctx.getAttributes()
和attr.get()
调用捕获 NamingException 。
编辑2:如果您想要反向,请搜索uPNSuffixes
属性值:
public String getDomainFromUpnSuffix( LdapContext ctx, String uPNSuffix )
{
String filter = "(&(CN=Partitions)(uPNSuffixes=" + uPNSuffix + "))" ;
// Find the configuration for this suffix
NamingEnumeration<SearchResult> results = ctx.search( "", filter, null );
while ( results.hasMore() )
{
SearchResult result = results.next();
return result.getNameInNamespace();
}
return null;
}