A
Ajay Bansal
We are trying to find the value of the "objectClass" attribute in ADAM.
For this we wrote the following code :
char *attrs[2] = {"objectClass", NULL};
LDAPMessage* result = NULL;
int nResult = ldap_search_s (ld, "dc=abcd,dc=com", LDAP_SCOPE_SUBTREE,
"objectClass=*", attrs, 0, &result);
if (nResult != LDAP_SUCCESS)
{
return LDAPUTIL_GETVERSIONFAIL;
}
int nentries = ldap_count_entries(ld, result);
if (nentries <= 0)
{
if (result != NULL)
ldap_msgfree (result);
return LDAPUTIL_SUCCESS;
}
LDAPMessage* e = ldap_first_entry (ld, result);
char** vals = ldap_get_values (ld, e, attrs[0] );
int i=0;
if (vals != NULL)
{
if (vals != NULL)
{
cout<<"\n val "<<vals<<endl;
i++;
}
ldap_value_free (vals);
}
if (result != NULL)
ldap_msgfree (result);
nResult = ldap_compare_s (ld, dcRoot, "objectClass","domainDNS");
if ((nResult == LDAP_COMPARE_TRUE))
{
cout<<"Active Directory Application Mode(ADAM)";
return LDAP_SUCCESS;
}
Actually,our main aim is to find the value of objectClass for ADAM(Active
Directory Application Mode)for use in ldap_compare_s().This is why we wrote
the code above to find the value of the objectclass parameter.
I have the following questions:
1)We have observed that domainDNS works for Active Directory.Does it also
work for ADAM? In our case,it does not.If it does not,what is the attribute
value of objectClass in case of ADAM?In my case, ldap_compare_s returns the
value 0x10 which means that the attribute does not exist. However,in ADAM ,I
can clearly see the attribute.But when I give this value in
ldap_compare_s(), it returns the error code 0x10.
Is there any other attribute which can be used to identify the dc objects on
ADAM just as objectclass and its value domainDNS work for Active Directory.
2)ldap_get_values() returns a NULL .What could be the possible solution?
3) I have also come to know that the RootDSE - defaultNamingContext is not
populated by default as it is in Active Directory. You have to populate this
attribute manually. How do we do that ?
My configuration settings:
Root DN : dc=abcd,dc=com
Regards
Ajay
For this we wrote the following code :
char *attrs[2] = {"objectClass", NULL};
LDAPMessage* result = NULL;
int nResult = ldap_search_s (ld, "dc=abcd,dc=com", LDAP_SCOPE_SUBTREE,
"objectClass=*", attrs, 0, &result);
if (nResult != LDAP_SUCCESS)
{
return LDAPUTIL_GETVERSIONFAIL;
}
int nentries = ldap_count_entries(ld, result);
if (nentries <= 0)
{
if (result != NULL)
ldap_msgfree (result);
return LDAPUTIL_SUCCESS;
}
LDAPMessage* e = ldap_first_entry (ld, result);
char** vals = ldap_get_values (ld, e, attrs[0] );
int i=0;
if (vals != NULL)
{
if (vals != NULL)
{
cout<<"\n val "<<vals<<endl;
i++;
}
ldap_value_free (vals);
}
if (result != NULL)
ldap_msgfree (result);
nResult = ldap_compare_s (ld, dcRoot, "objectClass","domainDNS");
if ((nResult == LDAP_COMPARE_TRUE))
{
cout<<"Active Directory Application Mode(ADAM)";
return LDAP_SUCCESS;
}
Actually,our main aim is to find the value of objectClass for ADAM(Active
Directory Application Mode)for use in ldap_compare_s().This is why we wrote
the code above to find the value of the objectclass parameter.
I have the following questions:
1)We have observed that domainDNS works for Active Directory.Does it also
work for ADAM? In our case,it does not.If it does not,what is the attribute
value of objectClass in case of ADAM?In my case, ldap_compare_s returns the
value 0x10 which means that the attribute does not exist. However,in ADAM ,I
can clearly see the attribute.But when I give this value in
ldap_compare_s(), it returns the error code 0x10.
Is there any other attribute which can be used to identify the dc objects on
ADAM just as objectclass and its value domainDNS work for Active Directory.
2)ldap_get_values() returns a NULL .What could be the possible solution?
3) I have also come to know that the RootDSE - defaultNamingContext is not
populated by default as it is in Active Directory. You have to populate this
attribute manually. How do we do that ?
My configuration settings:
Root DN : dc=abcd,dc=com
Regards
Ajay