-
Notifications
You must be signed in to change notification settings - Fork 305
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Proposed strategies for additional secret integration into ESDL script #18016
base: candidate-9.4.x
Are you sure you want to change the base?
WIP: Proposed strategies for additional secret integration into ESDL script #18016
Conversation
- Add a transactional secret cache to the script context. - Add secret support to http-post-xml. - Update secret support in mysql. Signed-off-by: Tim Klemm <tim.klemm@lexisnexisrisk.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This approach looks good to me. The two comments I made are for some possible small changes you might have already had on your radar.
esp/esdlscriptlib/esdl_script.cpp
Outdated
JBASE64_Encode(credentials, credentials.length(), encoded, false); | ||
if (method.isEmpty()) | ||
method.append("Basic"); | ||
method.append(' ').append(encoded); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need a colon between the header name and value.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just the value. The only colon is between username and password.
esp/esdlscriptlib/esdl_script.cpp
Outdated
if (!secret) | ||
recordException(ESDL_SCRIPT_MissingOperationAttr, "missing http-connect secret"); | ||
|
||
if (method.isEmpty() || streq(method, "Basic")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Header names are case insensitive. Probably should follow that here unless there is another reason not to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are correct about "Authorization" needing to be checked insensitively. "Basic" is part of the value. Values can be case sensitive, and I only see it presented one way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to make things more interesting, httpbinding.cpp does a case insensitive comparison of "Basic" while httplib.h performs a case sensitive comparison of "Basic". We appear to be inconsistent on handling of the value.
Fortunately, the question is only relevant because I try to reuse the value in the outgoing header instead of treating it as a simple selector. I'll update to treat the input value as a case-insensitive selector and replace it with the header value that seems to be expected.
Define XPath extension function getSecretKeyValue to lookup a secret and extract a named value from the matching property tree. Signed-off-by: Tim Klemm <tim.klemm@lexisnexisrisk.com>
ad319c7
to
4d308d8
Compare
Type of change:
Checklist:
Smoketest:
Testing: