Uwierzytelnianie OAuth dla MCP

Połącz Bob Shell z serwerami MCP wymagającymi dostępu delegowanego przez użytkownika za pomocą OAuth 2.1. Bob Shell zarządza procesem uwierzytelniania i odświeżania tokenów, więc nie musisz zarządzać tokenami ręcznie.

Uwaga:

Ogólną konfigurację MCP znajdziesz w dokumentacji Konfiguracja serwerów MCP.

Przegląd

Możesz połączyć Bob Shell z serwerami Model Context Protocol (MCP), które działają w twoim imieniu, na przykład uzyskując dostęp do repozytoriów, zasobów chmurowych lub usług przedsiębiorstwa. Te serwery używają OAuth 2.1, abyś mógł się zalogować i zatwierdzić dostęp.

Bob Shell zarządza przepływem uwierzytelniania bezpośrednio. Gdy skonfigurujesz serwer wymagający OAuth, Bob Shell otwiera okno autoryzacji w domyślnej przeglądarce. Po zalogowaniu i zatwierdzeniu uprawnień Bob Shell przechowuje i odświeża tokeny dostępu bez konieczności ręcznego zarządzania poświadczeniami.

Używaj OAuth, gdy:

  • Potrzebujesz dostępu do zasobów powiązanych z twoim osobistym lub korporacyjnym kontem użytkownika
  • Serwer używa krótkotrwałych tokenów wymagających automatycznego odświeżania
  • Chcesz przechowywać statyczne poświadczenia i sekrety poza plikami konfiguracyjnymi

Gdy masz już statyczny token API lub osobisty token dostępu, który nie wygasa, możesz zamiast tego użyć tokenu Bearer w headers.

Jak działa przepływ uwierzytelniania

  1. Dodajesz zdalny adres URL serwera MCP do pliku konfiguracyjnego bez poświadczeń headers lub env.
  2. Gdy Bob Shell łączy się z serwerem, Bob Shell wykrywa wymagania OAuth.
  3. Bob Shell otwiera okno logowania w przeglądarce, gdzie przeglądasz żądane uprawnienia i zatwierdzasz dostęp.
  4. Bob Shell otrzymuje tokeny autoryzacji i przechowuje je bezpiecznie w twoich sesjach.
  5. Bob Shell automatycznie odświeża tokeny przed ich wygaśnięciem, abyś mógł pracować bez przerw.
Bob Shell                   Serwer autoryzacji               Serwer MCP
   |                                |                               |
   |-- połącz z serwerem ---------->|                               |
   |<-- metadane OAuth (401) -------|                               |
   |-- otwórz monit auth ---------->|                               |
   |   (użytkownik loguje się)      |                               |
   |<-- kod autoryzacji ------------|                               |
   |-- wymień na tokeny ----------->|                               |
   |<-- tokeny dostępu + odświeżania|                               |
   |-- uwierzytelnione żądania --------------------------------->   |
   |   (automatyczne odświeżanie w razie potrzeby)                  |

Konfiguracja serwera obsługującego OAuth

Możesz skonfigurować serwery MCP w globalnej konfiguracji (~/.bob/mcp_settings.json) lub konfiguracji projektu (.bob/mcp.json).

Minimalna konfiguracja (automatyczne wykrywanie)

Gdy serwer MCP udostępnia automatyczne wykrywanie metadanych OAuth, wystarczy podać url:

{
  "mcpServers": {
    "my-oauth-server": {
      "url": "https://mcp.example.com/mcp"
    }
  }
}

Bob Shell wykrywa wymagania OAuth przy połączeniu i przeprowadza przez proces logowania w przeglądarce.

Niestandardowe parametry OAuth

Gdy dostawca tożsamości wymaga wstępnie zarejestrowanego ID klienta, niestandardowych zakresów lub sekretu klienta, skonfiguruj obiekt oauth:

{
  "mcpServers": {
    "my-oauth-server": {
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "enabled": true,
        "clientId": "your-client-id-from-idp",
        "clientSecret": "your-client-secret-if-required",
        "scope": "mcp:connect read:data"
      }
    }
  }
}

Właściwości konfiguracyjne

WłaściwośćTypOpis
urlstringZdalny adres URL punktu końcowego MCP (wymagany).
oauth.enabledbooleanUstaw na false, aby wyłączyć OAuth, lub true, aby wymagać OAuth. Domyślnie włączone, gdy nie ma nagłówka Authorization.
oauth.clientIdstringWstępnie zarejestrowany ID klienta OAuth wydany przez dostawcę tożsamości.
oauth.clientSecretstringSekret klienta OAuth, jeśli serwer autoryzacji wymaga go dla klientów poufnych.
oauth.scopestringOddzielona spacjami lista zakresów OAuth do żądania.
Ostrzeżenie:

Dodanie statycznego nagłówka Authorization do konfiguracji serwera MCP wyłącza OAuth. Gdy nagłówek Authorization jest obecny, Bob Shell nie inicjuje przepływu OAuth. Gdy OAuth jest aktywny, Bob Shell usuwa statyczne nagłówki Authorization przed wysłaniem żądań. Używaj tylko jednej metody uwierzytelniania na serwer.

Rejestracja Boba u dostawcy tożsamości

Gdy dostawca tożsamości (IdP) wymaga zarejestrowania Boba jako aplikacji klienckiej przed połączeniem, użyj następujących ustawień aplikacji:

UstawienieWartość
Typ aplikacji lub klientaPubliczny, natywny lub loopback (Authorization Code z PKCE)
Redirect URIhttp://127.0.0.1:33418/callback
Dodatkowe redirect URIhttp://127.0.0.1:33419/callback do http://127.0.0.1:33427/callback (zalecane, jeśli port 33418 jest zajęty)
Typy grantAuthorization Code (authorization_code) i Refresh Token (refresh_token)
ZakresyZakresy określone w dokumentacji serwera MCP

Skopiuj wydany ID klienta do oauth.clientId w pliku konfiguracyjnym.

Uwierzytelnianie po wyświetleniu monitu

Gdy łączysz się z serwerem obsługującym OAuth po raz pierwszy:

  1. Otwiera się okno przeglądarki z monitem autoryzacji.
  2. Przejrzyj uprawnienia, o które żąda serwer.
  3. Zaloguj się na swoje konto i zatwierdź dostęp.
  4. Bob Shell zapisuje twoje poświadczenia i automatycznie łączy się z narzędziami serwera.

Rozwiązywanie problemów

Monit uwierzytelniania nie otwiera się

  • Upewnij się, że serwer nie jest oznaczony jako wyłączony w konfiguracji.
  • Sprawdź, czy plik konfiguracyjny nie zawiera statycznego nagłówka Authorization w headers.
  • Uruchom ponownie Bob Shell, aby ponownie zainicjować połączenie.
  • Sprawdź, czy przeglądarka lub zapora sieciowa nie blokuje lokalnych połączeń loopback na 127.0.0.1.

Dostawca tożsamości zwraca błąd niezgodności redirect URI

  • Upewnij się, że rejestracja klienta u dostawcy tożsamości zawiera http://127.0.0.1:33418/callback.
  • Jeśli port 33418 jest zajęty, zarejestruj dodatkowe porty od 33419 do 33427.

Uwierzytelnianie się powiodło, ale serwer nie może się połączyć

  • Sprawdź, czy adres URL serwera jest prawidłowy i dostępny z twojej sieci.
  • Sprawdź, czy zatwierdziłeś wszystkie wymagane zakresy podczas kroku logowania.
  • Przejrzyj logi serwera lub dokumentację pod kątem wymaganych ról lub uprawnień użytkownika.

Tokeny wygasają często i musisz się ponownie uwierzytelnić

  • Potwierdź, że serwer autoryzacji wydaje tokeny odświeżania.
  • Sprawdź, czy zegar systemowy jest zsynchronizowany, aby zapobiec przedwczesnemu wygaśnięciu tokenu.

Chcesz się wylogować lub zmienić konto

Usuń lub zmień nazwę wpisu serwera w pliku konfiguracyjnym i dodaj go ponownie. Bob Shell potraktuje go jako nowy serwer i poprosi o zalogowanie przy następnym połączeniu.

Jak oceniasz ten temat?