/v1/*, uwierzytelnianie typu bearer za pomocą współdzielonego sekretu jest traktowane jako zaufany dostęp operatora do całego Gateway.
POST /tools/invoke- Ten sam port co Gateway (multipleksowanie WS + HTTP):
http://<gateway-host>:<port>/tools/invoke - Domyślny maksymalny rozmiar treści żądania: 2 MB
Uwierzytelnianie
Korzysta z konfiguracji uwierzytelniania Gateway. Typowe ścieżki uwierzytelniania HTTP:- uwierzytelnianie współdzielonym sekretem (
gateway.auth.mode="token"lub"password"):Authorization: Bearer <token-or-password> - zaufane uwierzytelnianie HTTP przenoszące tożsamość (
gateway.auth.mode="trusted-proxy"): skieruj ruch przez skonfigurowane proxy rozpoznające tożsamość i pozwól mu wstrzyknąć wymagane nagłówki tożsamości - otwarte uwierzytelnianie na prywatnym wejściu (
gateway.auth.mode="none"): nagłówek uwierzytelniania nie jest wymagany
mode="token"używagateway.auth.token(lubOPENCLAW_GATEWAY_TOKEN).mode="password"używagateway.auth.password(lubOPENCLAW_GATEWAY_PASSWORD).mode="trusted-proxy"wymaga, aby żądanie HTTP pochodziło ze skonfigurowanego zaufanego źródła proxy; proxy local loopback na tym samym hoście wymagają jawnego ustawieniagateway.auth.trustedProxy.allowLoopback = true.- Wewnętrzni wywołujący na tym samym hoście, którzy omijają proxy, mogą użyć
gateway.auth.password/OPENCLAW_GATEWAY_PASSWORDjako lokalnego bezpośredniego mechanizmu awaryjnego. Obecność dowolnego nagłówkaForwarded,X-Forwarded-*lubX-Real-IPpowoduje, że żądanie pozostaje na ścieżce zaufanego proxy. - Jeśli skonfigurowano
gateway.auth.rateLimiti wystąpi zbyt wiele nieudanych prób uwierzytelnienia, punkt końcowy zwraca429z nagłówkiemRetry-After.
Granica bezpieczeństwa (ważne)
Traktuj ten punkt końcowy jako interfejs zapewniający pełny dostęp operatora do instancji Gateway.- Uwierzytelnianie HTTP typu bearer nie stanowi tutaj modelu wąskiego zakresu dla poszczególnych użytkowników.
- Prawidłowy token lub hasło Gateway dla tego punktu końcowego należy traktować jak dane uwierzytelniające właściciela lub operatora.
- W trybach uwierzytelniania współdzielonym sekretem (
tokenipassword) punkt końcowy przywraca standardowe pełne domyślne uprawnienia operatora, nawet jeśli wywołujący wysyła węższy nagłówekx-openclaw-scopes. - Uwierzytelnianie współdzielonym sekretem powoduje również, że bezpośrednie wywołania narzędzi w tym punkcie końcowym są traktowane jako tury nadawcy będącego właścicielem.
- Zaufane tryby HTTP przenoszące tożsamość (uwierzytelnianie przez zaufane proxy lub
gateway.auth.mode="none"na prywatnym wejściu) respektują nagłówekx-openclaw-scopes, jeśli jest obecny, a w przeciwnym razie używają standardowego domyślnego zestawu zakresów operatora. - Udostępniaj ten punkt końcowy wyłącznie przez local loopback, tailnet lub prywatne wejście; nie wystawiaj go bezpośrednio do publicznego Internetu.
Treść żądania
tool/name(ciąg znaków, wymagane): nazwa narzędzia do wywołania. Jeśli wysłano oba pola,namema pierwszeństwo.action(ciąg znaków, opcjonalne): scalane zargs.action, jeśli schemat narzędzia obsługuje właściwośćaction, a wargsnie została ona jeszcze ustawiona.args(obiekt, opcjonalne): argumenty specyficzne dla narzędzia.sessionKey(ciąg znaków, opcjonalne): klucz sesji docelowej. Jeśli zostanie pominięty lub ma wartość"main", Gateway używa skonfigurowanego klucza sesji głównej (uwzględniasession.mainKeyi domyślnego agenta alboglobalw globalnym zakresie sesji).agentId(ciąg znaków, opcjonalne): określa klucz sesji dla danego agenta. Zwraca błąd400, jeśli występuje konflikt z jawnymsessionKey, który jest już przypisany do innego agenta.idempotencyKey(ciąg znaków, opcjonalne): używany do utworzenia stabilnego identyfikatora wywołania narzędzia.dryRun(wartość logiczna, opcjonalne): zarezerwowane do przyszłego użytku; obecnie ignorowane.
Zachowanie zasad i routingu
Dostępność narzędzi jest filtrowana przez ten sam łańcuch zasad, którego używają agenci Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- zasady grup (jeśli klucz sesji jest przypisany do grupy lub kanału)
- zasady podagenta (podczas wywoływania z kluczem sesji podagenta)
- Zatwierdzenia wykonywania stanowią zabezpieczenia operatora, a nie odrębną granicę autoryzacji dla tego punktu końcowego HTTP. Jeśli narzędzie jest tutaj dostępne na podstawie uwierzytelniania Gateway i zasad narzędzi,
/tools/invokenie dodaje dodatkowego monitu o zatwierdzenie dla każdego wywołania. - Jeśli
execjest tutaj dostępne, traktuj je jako interfejs powłoki umożliwiający modyfikacje. Odmowa dostępu dowrite,edit,apply_patchlub narzędzi HTTP zapisujących w systemie plików nie sprawia, że wykonywanie poleceń powłoki staje się tylko do odczytu. - Nie udostępniaj danych uwierzytelniających typu bearer Gateway niezaufanym wywołującym. Jeśli potrzebujesz rozdzielenia granic zaufania, uruchom oddzielne instancje Gateway (najlepiej jako oddzielni użytkownicy systemu operacyjnego lub na oddzielnych hostach).
cron, gateway i nodes są również dostępne wyłącznie dla właściciela: nawet poza tą domyślną listą blokad wywołujący niebędący właścicielem nie mogą ich używać w tym interfejsie.
Dostosuj ogólną listę blokad za pomocą gateway.tools:
gateway.tools.allow zastępuje ograniczenia ekspozycji, ale nie rozszerza zakresu uprawnień. W trybach HTTP przenoszących tożsamość narzędzia cron, gateway i nodes pozostają niedostępne dla wywołujących bez tożsamości właściciela lub administratora (operator.admin), nawet jeśli znajdują się na liście gateway.tools.allow. Uwierzytelnianie typu bearer współdzielonym sekretem nadal podlega opisanej powyżej regule pełnego zaufania do operatora.
Aby ułatwić zasadom grup określenie kontekstu, można opcjonalnie ustawić:
x-openclaw-message-channel: <channel>(przykład:slack,telegram)x-openclaw-account-id: <accountId>(gdy istnieje wiele kont)x-openclaw-message-to: <target>(cel dostarczania dla zasad narzędzia wiadomości)x-openclaw-thread-id: <threadId>(kontekst wątku dla zasad narzędzia wiadomości)