Uwierzytelnianie OAuth dla MCP
Bob Shell obsługuje OAuth 2.1 dla serwerów MCP wymagających dostępu delegowanego przez użytkownika. Bob obsługuje cały przepływ uwierzytelniania automatycznie, włącznie z odświeżaniem tokenów, więc nie musisz zarządzać tokenami ręcznie.
Ogólną konfigurację MCP znajdziesz w dokumentacji Konfiguracja serwerów MCP.
Przegląd
Niektóre serwery MCP muszą działać w Twoim imieniu jako użytkownika — na przykład aby odczytać repozytoria GitHub lub uzyskać dostęp do plików na Google Drive. Te serwery używają OAuth 2.1, aby prosić o Twoją zgodę przed uzyskaniem dostępu do danych.
Bob obsługuje pełny przepływ OAuth automatycznie. Gdy połączysz się z serwerem wymagającym OAuth, Bob otwiera przepływ autoryzacji w przeglądarce. Po autoryzacji Bob zarządza przechowywaniem tokenów i ich odświeżaniem bez dalszych kroków ręcznych.
Różni się to od statycznych metod uwierzytelniania, takich jak Bearer token w headers lub klucz API w env, które nadają się do kont serwisowych lub tokenów bez daty wygaśnięcia. Używaj OAuth, gdy:
- Serwer potrzebuje dostępu do zasobów należących do Twojego konta użytkownika
- Serwer autoryzacji wydaje krótkotrwałe tokeny wymagające odświeżania
- Chcesz uniknąć przechowywania długotrwałych sekretów w plikach konfiguracyjnych MCP
Jak działa przepływ uwierzytelniania
- Dodajesz serwer MCP obsługujący OAuth do pliku konfiguracyjnego (bez poświadczeń
headersanienv) - Gdy Bob po raz pierwszy łączy się z serwerem, wykrywa metadane autoryzacji OAuth serwera
- Bob otwiera monit uwierzytelniania w przeglądarce z prośbą o zalogowanie się i wyrażenie zgody
- Po autoryzacji Bob przechowuje tokeny dostępu i odświeżania bezpiecznie między sesjami
- Bob automatycznie odświeża tokeny przed ich wygaśnięciem. Nie zostaniesz ponownie poproszony, chyba że odświeżanie się nie powiedzie.
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
Serwery MCP obsługujące OAuth automatycznie ogłaszają swoje wymagania dotyczące autoryzacji. W większości przypadków potrzebujesz tylko adresu URL serwera — pola OAuth są opcjonalne. Bob obsługuje również następujące opcjonalne właściwości OAuth:
oauth: Ustaw nafalse, aby wyłączyć OAuth dla serwera, lubtrue, aby jawnie go włączyćclientId: Identyfikator klienta OAuth, jeśli wymagany przez serwer autoryzacjiclientSecret: Sekret klienta OAuth, jeśli wymagany przez serwer autoryzacjiscope: Lista zakresów OAuth oddzielonych spacjami
Przykładowa konfiguracja w ~/.bob/mcp_settings.json (globalna) lub .bob/mcp.json (projekt):
{
"mcpServers": {
"my-oauth-server": {
"url": "https://your-server-url.com/mcp"
}
}
}Bob wykrywa wymaganie OAuth podczas łączenia i inicjuje przepływ. Poświadczenia headers ani env nie są potrzebne.
Dodanie statycznego nagłówka Authorization do serwera obsługującego OAuth całkowicie wyłącza automatyczne OAuth. Bob nie próbuje przepływu OAuth. Odwrotnie — gdy OAuth jest aktywne, Bob usuwa wszelkie statyczne nagłówki Authorization przed wysłaniem żądań. Używaj tylko jednej metody.
Uwierzytelnianie po wyświetleniu monitu
Gdy Bob łączy się po raz pierwszy z serwerem obsługującym OAuth:
- Otwiera się okno przeglądarki z monitem autoryzacji
- Przejrzyj uprawnienia, których żąda serwer
- Zaloguj się na wymagane konto i wyraź zgodę
- Bob przechowuje tokeny i automatycznie kończy połączenie
Monit otwiera się w domyślnej przeglądarce. Po zakończeniu autoryzacji Bob Shell automatycznie wznawia połączenie.
Rozwiązywanie problemów
Monit uwierzytelniania nie pojawia się
- Upewnij się, że serwer nie jest oznaczony jako wyłączony w konfiguracji
- Uruchom ponownie Bob Shell, aby ponownie zainicjować połączenie z serwerem
- Sprawdź, czy przeglądarka nie blokuje strony autoryzacji
Uwierzytelnianie się powiodło, ale serwer nie może się połączyć
- Sprawdź, czy adres URL serwera jest prawidłowy i osiągalny
- Upewnij się, że przyznałeś(-aś) wszystkie wymagane uprawnienia podczas kroku wyrażania zgody
- Zapoznaj się z dokumentacją serwera w celu uzyskania dodatkowych wymagań dotyczących konfiguracji
Tokeny wygasają często i wymagane jest ponowne uwierzytelnianie
- Sprawdź, czy serwer autoryzacji obsługuje tokeny odświeżania. Niektóre serwery wydają wyłącznie tokeny dostępu z krótkim czasem życia.
- Sprawdź, czy zegar systemowy jest dokładny — odchylenie zegara może powodować przedwczesne wygaśnięcie tokenu
Chcesz się wylogować lub zmienić konto
Usuń lub zmień nazwę wpisu serwera w pliku konfiguracyjnym i dodaj go ponownie. Spowoduje to, że Bob potraktuje go jako nowy serwer i wywołuje świeży monit uwierzytelniania przy następnym połączeniu.