KeyCloakOIDCConnector

Bases: OIDCConnector

Keycloak-specific OIDC connector.

Source code in src/alpha/infra/connectors/oidc_connector.py
class KeyCloakOIDCConnector(OIDCConnector):
    """Keycloak-specific OIDC connector."""

    def __init__(
        self,
        base_url: str,
        realm: str,
        client_id: str,
        client_secret: str,
        scope: str | list[str] | None = None,
        admin_client_id: str | None = None,
        admin_client_secret: str | None = None,
        admin_scope: str | None = None,
        verify_tls: bool = True,
        timeout_seconds: int = 10,
    ) -> None:
        token_url = (
            f"{base_url}/realms/{realm}" "/protocol/openid-connect/token"
        )
        userinfo_url = (
            f"{base_url}/realms/{realm}" "/protocol/openid-connect/userinfo"
        )
        introspection_url = (
            f"{base_url}/realms/{realm}"
            "/protocol/openid-connect/token/introspect"
        )
        user_lookup_url_template = (
            f"{base_url}/admin/realms/{realm}/users" "?username={subject}"
        )
        super().__init__(
            token_url=token_url,
            userinfo_url=userinfo_url,
            introspection_url=introspection_url,
            client_id=client_id,
            client_secret=client_secret,
            scope=scope,
            verify_tls=verify_tls,
            timeout_seconds=timeout_seconds,
            user_lookup_url_template=user_lookup_url_template,
            admin_client_id=admin_client_id,
            admin_client_secret=admin_client_secret,
            admin_scope=admin_scope,
        )