Refactor WebSocket authentication handling by removing auth requirements from the hello message. Update related documentation and schemas to reflect the changes in authentication strategy, simplifying the connection process.
This commit is contained in:
@@ -124,7 +124,6 @@ class Session:
|
||||
self.ws_state = WsSessionState.WAIT_HELLO
|
||||
self._pipeline_started = False
|
||||
self.protocol_version: Optional[str] = None
|
||||
self.authenticated: bool = False
|
||||
|
||||
# Track IDs
|
||||
self.current_track_id: str = self.TRACK_CONTROL
|
||||
@@ -264,7 +263,7 @@ class Session:
|
||||
await self._send_error("client", f"Unsupported message type: {msg_type}", "protocol.unsupported")
|
||||
|
||||
async def _handle_hello(self, message: HelloMessage) -> None:
|
||||
"""Handle initial hello/auth/version negotiation."""
|
||||
"""Handle initial hello/version negotiation."""
|
||||
if self.ws_state != WsSessionState.WAIT_HELLO:
|
||||
await self._send_error("client", "Duplicate hello", "protocol.order")
|
||||
return
|
||||
@@ -279,23 +278,6 @@ class Session:
|
||||
self.ws_state = WsSessionState.STOPPED
|
||||
return
|
||||
|
||||
auth_payload = message.auth
|
||||
api_key = auth_payload.apiKey if auth_payload else None
|
||||
jwt = auth_payload.jwt if auth_payload else None
|
||||
|
||||
if settings.ws_api_key:
|
||||
if api_key != settings.ws_api_key:
|
||||
await self._send_error("auth", "Invalid API key", "auth.invalid_api_key")
|
||||
await self.transport.close()
|
||||
self.ws_state = WsSessionState.STOPPED
|
||||
return
|
||||
elif settings.ws_require_auth and not (api_key or jwt):
|
||||
await self._send_error("auth", "Authentication required", "auth.required")
|
||||
await self.transport.close()
|
||||
self.ws_state = WsSessionState.STOPPED
|
||||
return
|
||||
|
||||
self.authenticated = True
|
||||
self.protocol_version = message.version
|
||||
self.ws_state = WsSessionState.WAIT_START
|
||||
await self._send_event(
|
||||
@@ -701,8 +683,6 @@ class Session:
|
||||
return self.TRACK_AUDIO_IN
|
||||
if stage in {"llm", "tts", "tool"}:
|
||||
return self.TRACK_AUDIO_OUT
|
||||
if str(code or "").strip().lower().startswith("auth."):
|
||||
return self.TRACK_CONTROL
|
||||
return self.TRACK_CONTROL
|
||||
|
||||
def _envelope_event(self, event: Dict[str, Any]) -> Dict[str, Any]:
|
||||
|
||||
Reference in New Issue
Block a user