Uwierzytelnianie agenta

Dowiedz się, jak zabezpieczyć dostęp do agentów konwersacyjnych

Omówienie

Podczas tworzenia agentów konwersacyjnych możesz chcieć ograniczyć dostęp do niektórych agentów lub rozmów. ElevenLabs oferuje kilka mechanizmów uwierzytelniania, które zapewniają, że z twoimi agentami wchodzą w interakcję tylko uprawnieni użytkownicy.

Metody uwierzytelniania

ElevenLabs oferuje dwie główne metody zabezpieczania agentów konwersacyjnych:

Korzystanie z podpisanych adresów URL

Podpisane adresy URL to zalecane rozwiązanie dla aplikacji po stronie klienta. Ta metoda pozwala uwierzytelniać użytkowników bez ujawniania klucza API.

Poniższe przewodniki korzystają z klienta JS i Python SDK.

Jak działają podpisane adresy URL

  1. Twój serwer żąda podpisanego adresu URL od ElevenLabs, używając klucza API.
  2. ElevenLabs generuje tymczasowy token i zwraca podpisany adres WebSocket URL.
  3. Twoja aplikacja kliencka używa tego podpisanego adresu URL, aby nawiązać połączenie WebSocket.
  4. Podpisany adres URL wygasa po 15 minutach.
Nigdy nie ujawniaj klucza API ElevenLabs po stronie klienta.

Generowanie podpisanego adresu URL przez API

Aby uzyskać podpisany adres URL, wyślij żądanie do endpointu get_signed_url z identyfikatorem agenta:

# Server-side code using the Python SDK
from elevenlabs.client import ElevenLabs
async def get_signed_url():
try:
elevenlabs = ElevenLabs(api_key="your-api-key")
response = await elevenlabs.conversational_ai.conversations.get_signed_url(agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6")
return response.signed_url
except Exception as error:
print(f"Error getting signed URL: {error}")
raise

Odpowiedź curl ma następujący format:

{
"signed_url": "wss://api.elevenlabs.io/v1/convai/conversation?agent_id=agent_7101k5zvyjhmfg983brhmhkd98n6&conversation_signature=your-token"
}

Łączenie z agentem za pomocą podpisanego adresu URL

Pobierz z serwera wygenerowany podpisany adres URL w kliencie i użyj go, aby połączyć się z WebSocketem.

# Client-side code using the Python SDK
from elevenlabs.conversational_ai.conversation import (
Conversation,
AudioInterface,
ClientTools,
ConversationInitiationData
)
import os
from elevenlabs.client import ElevenLabs
api_key = os.getenv("ELEVENLABS_API_KEY")
elevenlabs = ElevenLabs(api_key=api_key)
conversation = Conversation(
client=elevenlabs,
agent_id=os.getenv("AGENT_ID"),
requires_auth=True,
audio_interface=AudioInterface(),
config=ConversationInitiationData()
)
async def start_conversation():
try:
signed_url = await get_signed_url()
conversation = Conversation(
client=elevenlabs,
url=signed_url,
)
conversation.start_session()
except Exception as error:
print(f"Failed to start conversation: {error}")

Wygasanie podpisanego adresu URL

Podpisane adresy URL są ważne przez 15 minut. Sesja rozmowy może trwać dłużej, ale musi zostać rozpoczęta w ciągu tych 15 minut.

Korzystanie z list dozwolonych

Listy dozwolonych pozwalają ograniczyć dostęp do agentów konwersacyjnych na podstawie domeny źródłowej. Dzięki temu z agentem mogą łączyć się tylko żądania z zatwierdzonych domen.

Jak działają listy dozwolonych

  1. Konfigurujesz listę zatwierdzonych nazw hostów dla swojego agenta.
  2. Gdy klient próbuje się połączyć, ElevenLabs sprawdza, czy źródło żądania odpowiada dozwolonej nazwie hosta.
  3. Jeśli źródło jest na liście dozwolonych, połączenie jest dozwolone; w przeciwnym razie zostaje odrzucone.

Konfigurowanie list dozwolonych

Listy dozwolonych konfigurujesz w ustawieniach uwierzytelniania agenta. Możesz podać maksymalnie 10 unikalnych nazw hostów, które mogą łączyć się z agentem.

Przykład: konfiguracja listy dozwolonych

Otwórz agenta w panelu i przejdź do karty Zabezpieczenia. Dodaj każdą zatwierdzoną nazwę hosta (np. example.com, app.example.com, localhost:3000) do listy dozwolonych.

Wybór metody uwierzytelniania

Skonfiguruj jedną metodę uwierzytelniania na agenta:

  1. Użyj podpisanych adresów URL (enable_auth) dla uwierzytelnionych sesji klienta.
  2. Użyj list dozwolonych (allowlist) do kontroli dostępu na podstawie nazwy hosta.

Nie konfiguruj jednocześnie podpisanych adresów URL i list dozwolonych dla tego samego agenta. Wybierz metodę pasującą do twojego modelu wdrożenia.

Przykład: tylko podpisane adresy URL

Użyj enable_auth bez allowlist:

from elevenlabs.client import ElevenLabs
import os
from elevenlabs.types import *
api_key = os.getenv("ELEVENLABS_API_KEY")
elevenlabs = ElevenLabs(api_key=api_key)
agent = elevenlabs.conversational_ai.agents.create(
conversation_config=ConversationalConfig(
agent=AgentConfig(
first_message="Hi. I require a signed URL.",
)
),
platform_settings=AgentPlatformSettingsRequestModel(
auth=AuthSettings(
enable_auth=True
)
)
)

Przykład: tylko lista dozwolonych

Użyj allowlist bez włączania podpisanych adresów URL:

from elevenlabs.client import ElevenLabs
import os
from elevenlabs.types import *
api_key = os.getenv("ELEVENLABS_API_KEY")
elevenlabs = ElevenLabs(api_key=api_key)
agent = elevenlabs.conversational_ai.agents.create(
conversation_config=ConversationalConfig(
agent=AgentConfig(
first_message="Hi. I only accept approved hostnames.",
)
),
platform_settings=AgentPlatformSettingsRequestModel(
auth=AuthSettings(
allowlist=[
AllowlistItem(hostname="example.com"),
AllowlistItem(hostname="app.example.com"),
]
)
)
)

FAQ

Jest to możliwe, ale zalecamy wygenerowanie nowego podpisanego adresu URL dla każdej sesji użytkownika.

Jeśli podpisany adres URL wygaśnie (po 15 minutach), żadne połączenie WebSocket utworzone za pomocą tego podpisanego adresu URL nie zostanie zamknięte, ale próba utworzenia nowego połączenia z tym adresem URL się nie powiedzie.

Mechanizm podpisanego adresu URL sprawdza tylko, czy żądanie pochodzi z autoryzowanego źródła. Aby ograniczyć dostęp do konkretnych użytkowników, zaimplementuj uwierzytelnianie użytkowników w aplikacji przed zażądaniem podpisanego adresu URL.

Nie ma konkretnego limitu liczby podpisanych adresów URL, które możesz wygenerować.

Listy dozwolonych dokładnie dopasowują nazwy hostów. Jeśli chcesz zezwolić zarówno na domenę, jak i jej subdomeny, musisz dodać każdą z nich osobno (np. „example.com” i „app.example.com”).

Nie. Dla każdego agenta skonfiguruj podpisane adresy URL albo listę dozwolonych. W przypadku aplikacji po stronie klienta podpisane adresy URL są zalecanym ustawieniem domyślnym.

Oprócz podpisanych adresów URL i list dozwolonych rozważ wdrożenie:

  • Uwierzytelniania użytkowników przed zażądaniem podpisanych adresów URL
  • Ograniczania liczby żądań API
  • Monitorowania użycia pod kątem podejrzanych wzorców
  • Właściwej obsługi błędów uwierzytelniania