Hydra
Platform:
| Channel | Revision | Published | Runs on |
|---|---|---|---|
| latest/stable | 396 | 14 Jul 2026 | |
| latest/edge | 404 | 13 Jul 2026 | |
| latest/edge | 403 | 13 Jul 2026 | |
| istio/edge | 402 | 07 Jul 2026 | |
| 0.6/edge | 396 | 28 Jan 2026 | |
| 0.5/edge | 395 | 18 Nov 2025 | |
| 0.3/edge | 394 | 08 Sep 2025 | |
| 0.2/stable | 285 | 26 Jun 2024 | |
| 0.2/edge | 285 | 09 May 2024 | |
| 0.1/edge | 270 | 24 Nov 2023 |
juju deploy hydra
charms.hydra.v0.oauth
-
- Last updated 19 Aug 2026
- Revision Library version 0.13
Oauth Library.
This library is designed to enable applications to register OAuth2/OIDC
clients with an OIDC Provider through the oauth interface.
Getting started
To get started using this library you just need to fetch the library using charmcraft. Note
that you also need to add jsonschema to your charm's requirements.txt.
cd some-charm
charmcraft fetch-lib charms.hydra.v0.oauth
EOF
Then, to initialize the library:
# ...
from charms.hydra.v0.oauth import ClientConfig, OAuthRequirer
OAUTH = "oauth"
OAUTH_SCOPES = "openid email"
OAUTH_GRANT_TYPES = ["authorization_code"]
class SomeCharm(CharmBase):
def __init__(self, *args):
# ...
self.oauth = OAuthRequirer(self, client_config, relation_name=OAUTH)
self.framework.observe(self.oauth.on.oauth_info_changed, self._configure_application)
# ...
def _on_ingress_ready(self, event):
self.external_url = "https://example.com"
self._set_client_config()
def _set_client_config(self):
client_config = ClientConfig(
urljoin(self.external_url, "/oauth/callback"),
OAUTH_SCOPES,
OAUTH_GRANT_TYPES,
)
self.oauth.update_client_config(client_config)
Provider
Besides the client_created/client_changed events, a provider can read a requirer's
published configuration at any time with OAuthProvider.get_client_config(relation). It
returns None when the requirer has published nothing yet and raises DataValidationError
when what it published does not match the requirer schema. Use it to reconcile registered
clients holistically rather than relying on an event having been delivered.
Note that client_created/client_changed are not emitted when the requirer's data fails
validation; the failure is logged and the relation is skipped rather than erroring the hook.
Index
class ClientConfigError
Description
Emitted when invalid client config is provided. None
class DataValidationError
Description
Raised when data validation fails on relation data. None
def strtobool(val: str)
Convert a string representation of truth to true (1) or false (0).
Description
True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if 'val' is anything else.
class OAuthRelation
Description
A class containing helper methods for oauth relation. None
Methods
class ClientConfig
Description
Helper class containing a client's configuration. None
Methods
ClientConfig. validate( self )
Description
Validate the client configuration. None
ClientConfig. to_dict( self )
Description
Convert object to dict. None
class OauthProviderConfig
Description
Helper class containing provider's configuration. None
Methods
OauthProviderConfig. from_dict( cls , dic: Dict )
Description
Generate OauthProviderConfig instance from dict. None
class OAuthInfoChangedEvent
Description
Event to notify the charm that the information in the databag changed. None
Methods
OAuthInfoChangedEvent. __init__( self , handle: Handle , client_id: str , client_secret_id: str )
OAuthInfoChangedEvent. snapshot( self )
Description
Save event. None
OAuthInfoChangedEvent. restore( self , snapshot: Dict )
Description
Restore event. None
class InvalidClientConfigEvent
Description
Event to notify the charm that the client configuration is invalid. None
Methods
InvalidClientConfigEvent. __init__( self , handle: Handle , error: str )
InvalidClientConfigEvent. snapshot( self )
Description
Save event. None
InvalidClientConfigEvent. restore( self , snapshot: Dict )
Description
Restore event. None
class OAuthInfoRemovedEvent
Description
Event to notify the charm that the provider data was removed. None
Methods
OAuthInfoRemovedEvent. snapshot( self )
Description
Save event. None
OAuthInfoRemovedEvent. restore( self , snapshot: Dict )
Description
Restore event. None
class OAuthRequirerEvents
Description
Event descriptor for events raised by OAuthRequirerEvents. None
class OAuthRequirer
Description
Register an oauth client. None
Methods
OAuthRequirer. __init__( self , charm: CharmBase , client_config , relation_name: str )
OAuthRequirer. is_client_created( self , relation_id )
Description
Check if the client has been created. None
OAuthRequirer. get_provider_info( self , relation_id )
Description
Get the provider information from the databag. None
OAuthRequirer. get_client_secret( self , client_secret_id: str )
Description
Get the client_secret. None
OAuthRequirer. update_client_config( self , client_config: ClientConfig , relation_id )
Description
Update the client config stored in the object. None
class ClientCreatedEvent
Description
Event to notify the Provider charm to create a new client. None
Methods
ClientCreatedEvent. __init__( self , handle: Handle , redirect_uri: str , scope: str , grant_types , audience: List , token_endpoint_auth_method: str , relation_id: int )
ClientCreatedEvent. snapshot( self )
Description
Save event. None
ClientCreatedEvent. restore( self , snapshot: Dict )
Description
Restore event. None
ClientCreatedEvent. to_client_config( self )
Description
Convert the event information to a ClientConfig object. None
class ClientChangedEvent
Description
Event to notify the Provider charm that the client config changed. None
Methods
ClientChangedEvent. __init__( self , handle: Handle , redirect_uri: str , scope: str , grant_types: List , audience: List , token_endpoint_auth_method: str , relation_id: int , client_id: str )
ClientChangedEvent. snapshot( self )
Description
Save event. None
ClientChangedEvent. restore( self , snapshot: Dict )
Description
Restore event. None
ClientChangedEvent. to_client_config( self )
Description
Convert the event information to a ClientConfig object. None
class ClientDeletedEvent
Description
Event to notify the Provider charm that the client was deleted. None
Methods
ClientDeletedEvent. __init__( self , handle: Handle , relation_id: int )
ClientDeletedEvent. snapshot( self )
Description
Save event. None
ClientDeletedEvent. restore( self , snapshot: Dict )
Description
Restore event. None
class OAuthProviderEvents
Description
Event descriptor for events raised by OAuthProviderEvents. None
class OAuthProvider
Description
A provider object for OIDC Providers. None
Methods
OAuthProvider. __init__( self , charm: CharmBase , relation_name: str )
OAuthProvider. remove_secret( self , relation: Relation )
OAuthProvider. get_client_secret( self , relation: Relation )
Return the client secret currently shared with the requirer, if there is one.
Description
Re-registering a client with this value keeps the requirer working: writing a different secret would cut a new revision that the requirer does not track.
OAuthProvider. get_client_config( self , relation: Relation )
Read the requirer's client configuration from the integration databag.
Description
Returns None when the requirer has not published its configuration yet.
OAuthProvider. set_provider_info_in_relation_data( self , issuer_url: str , authorization_endpoint: str , token_endpoint: str , introspection_endpoint: str , userinfo_endpoint: str , jwks_endpoint: str , scope: str , groups , ca_chain , jwt_access_token )
Description
Put the provider information in the databag. None
OAuthProvider. set_client_credentials_in_relation_data( self , relation_id: int , client_id: str , client_secret: str )
Description
Put the client credentials in the databag. None