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.
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
- Dodajesz zdalny adres URL serwera MCP do pliku konfiguracyjnego bez poświadczeń
headerslubenv. - Gdy Bob Shell łączy się z serwerem, Bob Shell wykrywa wymagania OAuth.
- Bob Shell otwiera okno logowania w przeglądarce, gdzie przeglądasz żądane uprawnienia i zatwierdzasz dostęp.
- Bob Shell otrzymuje tokeny autoryzacji i przechowuje je bezpiecznie w twoich sesjach.
- 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ść | Typ | Opis |
|---|---|---|
url | string | Zdalny adres URL punktu końcowego MCP (wymagany). |
oauth.enabled | boolean | Ustaw na false, aby wyłączyć OAuth, lub true, aby wymagać OAuth. Domyślnie włączone, gdy nie ma nagłówka Authorization. |
oauth.clientId | string | Wstępnie zarejestrowany ID klienta OAuth wydany przez dostawcę tożsamości. |
oauth.clientSecret | string | Sekret klienta OAuth, jeśli serwer autoryzacji wymaga go dla klientów poufnych. |
oauth.scope | string | Oddzielona spacjami lista zakresów OAuth do żądania. |
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:
| Ustawienie | Wartość |
|---|---|
| Typ aplikacji lub klienta | Publiczny, natywny lub loopback (Authorization Code z PKCE) |
| Redirect URI | http://127.0.0.1:33418/callback |
| Dodatkowe redirect URI | http://127.0.0.1:33419/callback do http://127.0.0.1:33427/callback (zalecane, jeśli port 33418 jest zajęty) |
| Typy grant | Authorization Code (authorization_code) i Refresh Token (refresh_token) |
| Zakresy | Zakresy 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:
- Otwiera się okno przeglądarki z monitem autoryzacji.
- Przejrzyj uprawnienia, o które żąda serwer.
- Zaloguj się na swoje konto i zatwierdź dostęp.
- 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
Authorizationwheaders. - 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
33419do33427.
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.