NIFI-8286 Extended CertificateUtils to allow parsing of CNs conforming to RFC5280#4866
NIFI-8286 Extended CertificateUtils to allow parsing of CNs conforming to RFC5280#4866jwoschitz wants to merge 1 commit intoapache:mainfrom
Conversation
exceptionfactory
left a comment
There was a problem hiding this comment.
Thanks for the contribution @jwoschitz! This looks like a straightforward change with a clear associated unit test. See one comment about potentially using a regular expression to simplify the extraction.
| final String emailPattern = "/emailAddress="; | ||
| final int index = StringUtils.indexOfIgnoreCase(username, emailPattern); | ||
| if (index >= 0) { | ||
| String[] dnParts = username.split(emailPattern); | ||
| if (dnParts.length > 0) { | ||
| // only use the actual CN | ||
| username = dnParts[0]; | ||
| } | ||
| } |
There was a problem hiding this comment.
Did you consider using regular expression pattern? That might simplify the approach and the Pattern could be compiled as a static variable.
| final String emailPattern = "/emailAddress="; | |
| final int index = StringUtils.indexOfIgnoreCase(username, emailPattern); | |
| if (index >= 0) { | |
| String[] dnParts = username.split(emailPattern); | |
| if (dnParts.length > 0) { | |
| // only use the actual CN | |
| username = dnParts[0]; | |
| } | |
| } | |
| // Replace variable with: private static final Pattern EMAIL_ATTRIBUTE_PATTERN = Pattern.compile("/emailAddress=.+"); | |
| final Pattern emailAttributePattern = Pattern.compile("/emailAddress=.+"); | |
| final Matcher emailMatcher = emailAttributePattern.matcher(username); | |
| if (emailMatcher.find()) { | |
| username = emailMatcher.replace(StringUtils.EMPTY); | |
| } |
There was a problem hiding this comment.
Yes, I considered it, though as the other logic (see already existing code above the lines added by me) was not using regex for a similar problem, I tried to keep the code consistent by following the same approach.
There was a problem hiding this comment.
Thanks for the reply @jwoschitz, that's a good point. Following the approach of the existing code sounds good.
exceptionfactory
left a comment
There was a problem hiding this comment.
Thanks for the work on this @jwoschitz. +1 Merging.
…g to RFC5280 This closes apache#4866 Signed-off-by: David Handermann <exceptionfactory@apache.org>
…g to RFC5280 This closes apache#4866 Signed-off-by: David Handermann <exceptionfactory@apache.org>
Thank you for submitting a contribution to Apache NiFi.
Please provide a short description of the PR here:
Description of PR
This PR addresses the issues described in https://issues.apache.org/jira/browse/NIFI-8286. It enables parsing of subject distinguished names which contain an embedded emailAddress attribute, which is a valid (though legacy) way to define a subject according to RFC5280.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:
Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?
Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.
Has your PR been rebased against the latest commit within the target branch (typically
main)?Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not
squashor use--forcewhen pushing to allow for clean monitoring of changes.For code changes:
mvn -Pcontrib-check clean installat the rootnififolder?LICENSEfile, including the mainLICENSEfile undernifi-assembly?NOTICEfile, including the mainNOTICEfile found undernifi-assembly?.displayNamein addition to .name (programmatic access) for each of the new properties?For documentation related changes:
Note:
Please ensure that once the PR is submitted, you check GitHub Actions CI for build issues and submit an update to your PR as soon as possible.