Emmanuel, can you give me a rough estimate on when a new version with the fixes will be available? I need to upgrade due to CVEs for dependencies of older versions of org.apache.directory.api:api-all, for the release of our own software. Thus I need to know whether I can wait for your release, or need to compile the library myself.
Cheers, Patrick Am Mi., 6. Dez. 2023 um 09:26 Uhr schrieb Patrick Peer <[email protected]>: > Hi Emmanuel! > > > Side note: I'd be interested to know what is your usage of the LDAP API > > and why you picked it against other libs. Just for my personnal interest! > I inherited the code using the LDAP API, so my best guess is: When Apache > provides a library for the thing you want to do, you use it :). > As for the actual use case, we want to query Healthcare Provider > Directories (HPDs) [1]. > > > Btw, I now realize that the output is incorrect, even after my fix. The > > produced DSML should still contain the Base64 value, which is currently > > not. I'll fix that. > Given that this was a bug, and the filter values will be generated again, > setFilter(String) _should_ work after the fix. However, given my experience > in the field, I fear there will be problems with HPDs that are not prepared > to handle base64 values. I might be wrong on that though, and as long as > IHE's HPD simulator is happy, I think I will use the simpler (for me) > base64 filters. On that note, do you have an estimate on when a new version > will be released? > > Cheers, > Patrick > > > > [1] https://www.ihe.net/uploadedFiles/Documents/ITI/IHE_ITI_Suppl_HPD.pdf > - 3.58 Provider Information Query > > Am Di., 5. Dez. 2023 um 23:02 Uhr schrieb Emmanuel Lécharny < > [email protected]>: > >> Ok, I get a fixed version of the setFilter( String ) that produces this >> output: >> >> <?xml version="1.0" encoding="UTF-8"?> >> <batchRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> >> <searchRequest derefAliases="derefAlways"> >> <filter> >> <equalityMatch name="uid"> >> <value/> >> </equalityMatch> >> <equalityMatch name="uid"> >> <value >> xsi:type="xsd:base64Binary">U29tZUFyYml0cmFyeUJlbmlnblN0cmluZw==</value> >> </equalityMatch> >> </filter> >> </searchRequest> >> </batchRequest> >> >> As youc an imagine, "U29tZUFyYml0cmFyeUJlbmlnblN0cmluZw==" is >> "SomeArbitraryBenignString" base 64 encoded. >> >> >> Should it do the trick? >> >> On 05/12/2023 15:43, Patrick Peer wrote: >> > Thanks Emmanuel! >> > >> > Using a SchemaManager solved my immediate problem. However, now I need >> > to provide a custom Schema, since I need to query domain specific OIDs. >> > Before, the library was happy with arbitrary OIDs, and so was I :). >> > >> > Addressing the easy API life, >> > >> org.apache.directory.api.dsmlv2.request.SearchRequestDsml.setFilter(String) >> seems broken to me, as this code path does not produce the expected output, >> and this is not obvious in any way, not to say that the semantic of this >> method changed without notice. Ideally, this method would not exist, but >> since it is required by the implemented interface, that is not easily >> achieved, and a bigger refactoring would be needed. That said, I, >> of course, do not have a deep understanding of your code base, so please >> take my suggestion with a grain of salt ;). >> > >> > Thanks for the improved setFilter(SchemaManager, String) method, albeit >> > it is secondary to me, compared to the changed semantics of >> > setFilter(String), and the extra setup needed to be able to query >> > arbitrary OIDs. To better illustrate what I mean, here is one of the >> > filters which is currently broken for me: >> > "(hcIdentifier=*1.3.6.1.4.1.21367.1776:IHENA:A-919191:Active*)" >> > >> > I am currently in the process of figuring out an easy way to add the >> > required OIDs to the SchemaManager, and will eventually figure it out, >> > but if you have any hints, I'd be grateful :). >> > >> > Cheers, >> > Patrick >> > >> > Am Di., 5. Dez. 2023 um 13:48 Uhr schrieb Emmanuel Lécharny >> > <[email protected] <mailto:[email protected]>>: >> > >> > Hi again! >> > >> > I have modified the LDAP API to be able to deal with the >> attributeType >> > properly when we have a SchemaManager, and to do so in a more user >> > friendly way. >> > >> > Here is thge modified original test: >> > >> > @Test >> > public void testMinimalEqualityRequest() throws Exception { >> > SearchRequestDsml searchRequest = new >> > SearchRequestDsml(LdapApiServiceFactory.getSingleton()); >> > >> > // Create the SchemaManager instance >> > SchemaManager schemaManager = new DefaultSchemaManager(); >> > >> > // Use it as a parameter so that the filter get properly >> parsed >> > searchRequest.setFilter( schemaManager, >> > "(uid=SomeArbitraryBenignString)" ); >> > >> > >> > BatchRequestDsml batchRequest = new BatchRequestDsml(); >> > batchRequest.addRequest(searchRequest); >> > String dsmlString = batchRequest.toDsml(); >> > >> > System.out.print( dsmlString ); >> > } >> > >> > which prints out the expected result: >> > >> > <?xml version="1.0" encoding="UTF-8"?> >> > <batchRequest> >> > <searchRequest derefAliases="derefAlways"> >> > <filter> >> > <equalityMatch name="uid"> >> > <value>SomeArbitraryBenignString</value> >> > </equalityMatch> >> > </filter> >> > </searchRequest> >> > </batchRequest> >> > >> > It will most certainly be included in 2.1.6. >> > >> > >> > On 04/12/2023 21:18, Patrick Peer wrote: >> > > Hello! >> > > >> > > I recently upgraded the version >> > of org.apache.directory.api:api-all from >> > > 2.1.0 to 2.1.5 in the dependencies of our product, which >> resulted in >> > > some test failures on my end. As it seems, values for equality >> > filters >> > > are not set in the request anymore. For your convenience, I >> cobbled >> > > together a minimal test case to reproduce the condition [1]. >> > It works >> > > with Version 2.1.0 and does not work with 2.1.5. >> > > >> > > Upon further investigation, I think I found some issues >> > > >> > >> in org.apache.directory.api.dsmlv2.request.SearchRequestDsml.toDsml(Element, >> ExprNode)@2.1.5: >> > > + On line 559 value.isHumanReadable() is queried to decide >> > whether to >> > > use the value as is, or to encode it in base64. => This seems >> > broken, >> > > since, as far as I can tell, >> > > the org.apache.directory.api.ldap.model.entry.Value.isHR flag is >> > always >> > > false at this particular point in the code. >> > > >> > + org.apache.directory.api.dsmlv2.ParserUtils.base64Encode(Object) >> only >> > > yields base64 values for byte[] and String, however here a >> > > org.apache.directory.api.ldap.model.entry.Value is passed, which >> > will >> > > always result in an empty String. >> > > >> > > The corresponding commit should be [2]. >> > > >> > > Do you agree that this is a bug, and should I jump through the >> > hoops to >> > > open a Jira issue, or is there an alternative/intended way to >> work >> > > around this? >> > > >> > > Cheers, >> > > Patrick Peer >> > > >> > > >> > > >> > > [1] >> > > @Test >> > > public void testMinimalEqualityRequest() throws Exception { >> > > SearchRequestDsml searchRequest = new >> > > SearchRequestDsml(LdapApiServiceFactory.getSingleton()); >> > > searchRequest.setFilter("(uid=SomeArbitraryBenignString)"); >> > > >> > > BatchRequestDsml batchRequest = new BatchRequestDsml(); >> > > batchRequest.addRequest(searchRequest); >> > > String dsmlString = batchRequest.toDsml(); >> > > >> > > >> assertThat(dsmlString).contains("SomeArbitraryBenignString"); >> > > } >> > > >> > > [2] >> > > >> > >> https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 >> < >> https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859> >> < >> https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 >> < >> https://github.com/apache/directory-ldap-api/commit/1dd1248d33ffed80cc225e76b2769e4558bbc859 >> >> >> > >> > -- >> > *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 >> > [email protected] <mailto:[email protected]> >> > >> >> -- >> *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 >> [email protected] >> >
