[python] Fix basic auth always being used #12212
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR checklist
./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
and./bin/security/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
.3.0.0
branch for changes related to OpenAPI spec 3.0. Default:master
.@kenjones-cisco
Description of the PR
The Python client configuration will always generate a basic auth header regarless of username and password actually being set. This is a problem if the consumer is trying to use another authorization method that uses the same header name, e.g. Authorization. This bug is only triggered when the api spec's security definitions list BasicAuth after an auth type that uses a conflicting header.
Unfortunately, RFC 2617 1 says that both the username and password are allowed to be empty. This is how golang implements basic auth 2 which means golang codegen is also affected. Java codegen requires both username and password to be set 3. C# requires only one of them to be set 4. Java and C# are therefore not affected. Change python codegen to require either the username or password to be set as a compromise between being broken and rfc compliant.
fixes #9430