-
-
Notifications
You must be signed in to change notification settings - Fork 262
Closed
Labels
✨ enhancementNew feature or improvementNew feature or improvement🍭 OpenAPI ComplianceSupporting a new bit of the OpenAPI specSupporting a new bit of the OpenAPI spec
Description
Is your feature request related to a problem? Please describe.
OpenAPI 3 supports expressing basic auth support: https://swagger.io/docs/specification/authentication/basic-authentication/
While basic auth is often not ideal for production, during development basic auth can be quite handy. Currently it is not possible to directly use basic auth with the generated Python client.
Describe the solution you'd like
Detect if an API supports basic auth and provide it as an alternative AuthenticatedClient.
An example implementation:
from base64 import b64encode
from typing import Dict
import attr
@attr.s(auto_attribs=True)
class BasicAuthAuthenticatedClient(Client):
"""A Client which has been authenticated for use on secured endpoints"""
username: str
password: str
def get_headers(self) -> Dict[str, str]:
"""Get headers to be used in authenticated endpoints"""
encoded_credentials = b64encode(f"{self.username}:{self.password}".encode()).decode()
return {"Authorization": f"Basic {encoded_credentials}", **self.headers}Describe alternatives you've considered
The AuthenticatedClient could be made to take either a token or username/password.
mcdenhoed, iainvm, mstarecek, scorgn, jollysahil and 2 more
Metadata
Metadata
Assignees
Labels
✨ enhancementNew feature or improvementNew feature or improvement🍭 OpenAPI ComplianceSupporting a new bit of the OpenAPI specSupporting a new bit of the OpenAPI spec