Thanks (as always) Chuck! I tested out the URL approach and it works. I’m also connecting to port 3268 instead of 389 per this:
https://stackoverflow.com/questions/16412236/how-to-resolve-javax-naming-partialresultexception. That’s solved everything for now and it looks like including the search base in the URL is a somewhat standard way to go. I’m still gonna investigate some more code-centric ways of handling it - seems less brittle. JNDIAdaptor does not expose the search base attribute. It does expose the connection dictionary - so I’m guessing you could read it and add a key/value pair for the search base, which I think would update the wrapped DirContext. Tim > On Jul 24, 2017, at 11:56 AM, Chuck Hill <ch...@gevityinc.com> wrote: > > Hi Tim, > > Take a look at the JNDIAdaptor class. There are connection dictionary > parameters in there, one of those might be what you want. Or can you specify > that on the connection URL? > > Chuck > > > From: Tim Worman <li...@thetimmy.com> > Date: Monday, July 24, 2017 at 11:43 AM > To: Chuck Hill <ch...@gevityinc.com> > Cc: WebObjects Development <webobjects-dev@lists.apple.com> > Subject: Re: Active Directory, JNDI, EOModel > > Using Wireshark, below is what I’m seeing for the two queries. The biggest > difference right off the bat is that the WO/EOModel search seems to search > ROOT as the base DN whereas the Apache DirectoryStudio is using > “DC=adinstance,DC=ucla,DC=edu” as the base. The WO/EOModel search also > appears to have additional objectClass ‘AND’ filters. > > Looks like my first guess was somewhat likely - I need to find a way to get a > handle on the query and feed a base DN to my fetch in WO. > > It looks like this might be a way to set that: > JNDIPlugin - base > > But I’m wondering if there is a way to set it once at the launch of an app > and not have to set it again. > > -------------------------------------------- > > From WebObjects: > Lightweight Directory Access Protocol > LDAPMessage searchRequest(2) "<ROOT>" wholeSubtree > messageID: 2 > protocolOp: searchRequest (3) > searchRequest > baseObject: > scope: wholeSubtree (2) > derefAliases: derefAlways (3) > sizeLimit: 0 > timeLimit: 3601 > typesOnly: False > Filter: (objectClass=user) > filter: and (0) > and: (objectClass=user) > and: 1 item > Filter: (objectClass=user) > attributes: 0 items > [Response In: 8] > controls: 1 item > Control > controlType: 2.16.840.1.113730.3.4.2 (Manage DSA IT LDAPv3 > control) > > From Apache Directory Studio: > Lightweight Directory Access Protocol > LDAPMessage searchRequest(14) “DC=adinstance,DC=ucla,DC=edu" wholeSubtree > messageID: 14 > protocolOp: searchRequest (3) > searchRequest > baseObject: DC=adinstance,DC=ucla,DC=edu > scope: wholeSubtree (2) > derefAliases: derefAlways (3) > sizeLimit: 1000 > timeLimit: 0 > typesOnly: False > Filter: (objectClass=user) > filter: equalityMatch (3) > equalityMatch > attributeDesc: objectClass > assertionValue: user > attributes: 2 items > AttributeDescription: cn > AttributeDescription: objectClass > [Response In: 2] > > > > On Jul 21, 2017, at 12:58 PM, Chuck Hill <ch...@gevityinc.com> wrote: > > Try going through a proxy like Charles. Comparing what is sent from WO and > from Directory Studio might highlight what is wrong. I am sure that I did > this many years ago, but the details escape me. Microsoft’s standard is just > a little…different. > > Chuck > > On 2017-07-21, 12:56 PM, "Webobjects-dev on behalf of Tim Worman" > <webobjects-dev-bounces+chill=gevityinc....@lists.apple.com on behalf of > li...@thetimmy.com> wrote: > > Yeah, I’m not using the model for authentication to AD, I’m intending to > use simply to return EO's from AD. I’m encountering the error below when I > simply try: > > ADUser.fetchAllADUsers(pageEditingContext()); > > The WARN log seems to indicate that I can’t search objectClass “user.” But > it is modeled and was reverse engineered. I’m unsure why that would be > considering I haven’t had that issue before with other ldap services. > > Tim > > > On Jul 21, 2017, at 12:50 PM, Theodore Petrosky <tedp...@yahoo.com> wrote: > > did you see this: > > https://www.slideshare.net/wocommunity/third-party-auth-in-webobjects > > I was looking to see if there was a video to go along with the slides but > didn’t find one. > > > > On Jul 21, 2017, at 3:10 PM, Tim Worman <li...@thetimmy.com> wrote: > > Has anyone used the JNDI plugin to model Active Directory? I’ve used it with > a lot of success with other ldap directories but I’m running into a problem > with a pretty simple model (which I’m sure has to do with AD’s > implementation). > > I reverse engineered our AD (Server 2016) instance with no problem - and only > included Person and User in my model. However, when I try to do a simple > fetch of all User (or Person) I get sth like: > > Jul 21 11:11:23 GSEISNetTestApplication[54777] DEBUG NSLog - Waiting for > requests... > Jul 21 11:11:24 GSEISNetTestApplication[54777] WARN > er.extensions.eof.ERXModelGroup - Clearing previous class descriptions > Jul 21 11:11:24 GSEISNetTestApplication[54777] DEBUG NSLog - Context factory > cache is already clear > Jul 21 11:11:24 GSEISNetTestApplication[54777] DEBUG NSLog - Connecting: > {plugInClassName = "com.webobjects.jndiadaptor.LDAPPlugIn"; timeout = "3600"; > scope = "Subtree"; username = "CN="Application Server",OU="Service > Accounts",OU=ETU,DC=gseisnet,DC=ucla,DC=edu"; authenticationMethod = > "Simple"; password = "<omitted from log>"; serverUrl = > "ldap://gseisnet.ucla.edu:389"; initialContextFactory = > "com.sun.jndi.ldap.LdapCtxFactory"; } > Jul 21 11:11:24 GSEISNetTestApplication[54777] DEBUG NSLog - Creating > plug-in com.webobjects.jndiadaptor.LDAPPlugIn for JNDIAdaptor@1084219182 > Jul 21 11:11:24 GSEISNetTestApplication[54777] WARN NSLog - Cannot search > (&(objectClass=user)) > [2017-7-21 11:11:24 PDT] <WorkerThread0> javax.naming.NameNotFoundException: > [LDAP: error code 32 - 0000208D: NameErr: DSID-0310021B, problem 2001 > (NO_OBJECT), data 0, best match of: > '' > ]; remaining name '' > > When I use Directory Studio to perform what appears to be the same search, > filtering on objectClass user, I get the results I would expect. I’m using > the same bind credentials in both as well. One guess I have is the search > base, which I have set to the base DN in Directory Studio. Is there a way to > get a handle on the JNDI adaptor and set the search base globally in case it > isn’t right? > > Any other ideas? I know I’m probably off the reservation here. > > Tim > UCLA GSE&IS > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com > > This email sent to tedp...@yahoo.com > > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > > https://lists.apple.com/mailman/options/webobjects-dev/chill%40gevityinc.com > > This email sent to ch...@gevityinc.com > > > > _______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com