Autentikasi OAuth MCP
Hubungkan Bob Shell ke server MCP yang memerlukan akses yang didelegasikan oleh pengguna dengan OAuth 2.1. Bob Shell mengelola proses autentikasi dan token refresh sehingga kamu tidak perlu mengelola token secara manual.
Untuk konfigurasi MCP umum, lihat Mengonfigurasi server MCP.
Ringkasan
Kamu dapat menghubungkan Bob Shell ke server Model Context Protocol (MCP) yang bertindak atas namamu, seperti mengakses repositori, resource cloud, atau layanan enterprise milikmu. Server ini menggunakan OAuth 2.1 sehingga kamu dapat sign in dan menyetujui akses.
Bob Shell mengelola alur autentikasi secara langsung. Saat kamu mengonfigurasi server yang memerlukan OAuth, Bob Shell membuka jendela otorisasi di browser default kamu. Setelah kamu sign in dan menyetujui izin, Bob Shell menyimpan dan me-refresh token aksesmu tanpa mengharuskanmu menangani kredensial secara manual.
Gunakan OAuth saat:
- Kamu perlu mengakses resource yang terkait dengan akun pengguna pribadi atau enterprise milikmu
- Server menggunakan token berumur pendek yang memerlukan token refresh otomatis
- Kamu ingin menjaga kredensial statis dan secret tetap berada di luar file konfigurasi
Ketika kamu sudah memiliki token API statis atau personal access token yang tidak kedaluwarsa, kamu dapat menggunakan Bearer token di headers sebagai gantinya.
Cara kerja alur autentikasi
- Kamu menambahkan URL remote server MCP ke file konfigurasi tanpa kredensial
headersatauenv. - Saat Bob Shell terhubung ke server, Bob Shell mendeteksi persyaratan OAuth.
- Bob Shell membuka jendela sign-in browser tempat kamu meninjau izin yang diminta dan menyetujui akses.
- Bob Shell menerima token otorisasi dan menyimpannya secara aman lintas sesimu.
- Bob Shell secara otomatis me-refresh token sebelum kedaluwarsa sehingga kamu dapat bekerja tanpa gangguan.
Bob Shell Authorization Server MCP Server
| | |
|-- connect to server ---------->| |
|<-- OAuth metadata (401) -------| |
|-- open auth prompt ----------->| |
| (user signs in & consents) | |
|<-- authorization code ---------| |
|-- exchange for tokens -------->| |
|<-- access + refresh tokens ----| |
|-- authenticated requests ---------------------------------> |
| (auto-refresh when needed) |Mengonfigurasi server yang mendukung OAuth
Kamu dapat mengonfigurasi server MCP baik di konfigurasi global (~/.bob/mcp_settings.json) maupun konfigurasi proyek (.bob/mcp.json).
Konfigurasi minimal (penemuan otomatis)
Saat server MCP menyediakan penemuan metadata OAuth otomatis, kamu hanya perlu menentukan url:
{
"mcpServers": {
"my-oauth-server": {
"url": "https://mcp.example.com/mcp"
}
}
}Bob Shell mendeteksi persyaratan OAuth saat koneksi dan memandumu melalui proses sign-in browser.
Parameter OAuth kustom
Saat identity provider memerlukan client ID yang telah didaftarkan sebelumnya, scope kustom, atau client secret, konfigurasikan objek 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"
}
}
}
}Properti konfigurasi
| Properti | Tipe | Deskripsi |
|---|---|---|
url | string | URL endpoint remote MCP (wajib). |
oauth.enabled | boolean | Set ke false untuk menonaktifkan OAuth, atau true untuk mewajibkan OAuth. Diaktifkan secara default saat tidak ada header Authorization. |
oauth.clientId | string | Client ID OAuth yang telah didaftarkan sebelumnya yang diterbitkan oleh identity provider-mu. |
oauth.clientSecret | string | OAuth client secret, jika authorization server-mu memerlukannya untuk confidential client. |
oauth.scope | string | Daftar scope OAuth yang dipisahkan spasi yang ingin kamu minta. |
Menambahkan header Authorization statis ke konfigurasi server MCP akan mematikan OAuth. Saat header Authorization ada, Bob Shell tidak memulai alur OAuth. Saat OAuth aktif, Bob Shell menghapus header Authorization statis sebelum mengirim permintaan. Gunakan hanya satu metode autentikasi per server.
Mendaftarkan Bob dengan identity provider kamu
Saat identity provider (IdP) mengharuskanmu mendaftarkan Bob sebagai aplikasi klien sebelum terhubung, gunakan pengaturan aplikasi berikut:
| Pengaturan | Nilai |
|---|---|
| Tipe aplikasi atau klien | Public, Native, atau Loopback (Authorization Code dengan PKCE) |
| Redirect URI | http://127.0.0.1:33418/callback |
| Redirect URI tambahan | http://127.0.0.1:33419/callback hingga http://127.0.0.1:33427/callback (direkomendasikan jika port 33418 sedang digunakan) |
| Grant type | Authorization Code (authorization_code) dan Refresh Token (refresh_token) |
| Scope | Scope yang ditentukan dalam dokumentasi server MCP milikmu |
Salin client ID yang diterbitkan ke dalam oauth.clientId di file konfigurasi kamu.
Autentikasi saat diminta
Saat kamu terhubung ke server yang mendukung OAuth untuk pertama kalinya:
- Jendela browser terbuka dengan prompt otorisasi.
- Tinjau izin yang diminta oleh server.
- Sign in ke akunmu dan setujui akses.
- Bob Shell menyimpan kredensialmu dan terhubung ke tool server secara otomatis.
Pemecahan masalah
Prompt autentikasi tidak terbuka
- Verifikasi bahwa kamu tidak menandai server sebagai dinonaktifkan dalam konfigurasi kamu.
- Periksa bahwa file konfigurasi kamu tidak menyertakan header
Authorizationstatis diheaders. - Restart Bob Shell untuk menginisiasi ulang koneksi.
- Periksa bahwa browser atau firewall kamu tidak memblokir koneksi loopback lokal pada
127.0.0.1.
Identity provider mengembalikan error ketidakcocokan redirect URI
- Verifikasi bahwa pendaftaran klien identity provider kamu menyertakan
http://127.0.0.1:33418/callback. - Jika port 33418 sedang sibuk, daftarkan port tambahan dari
33419hingga33427.
Autentikasi berhasil tetapi server gagal terhubung
- Verifikasi bahwa URL server sudah benar dan dapat diakses dari jaringanmu.
- Periksa bahwa kamu telah menyetujui semua scope yang diperlukan selama langkah sign-in.
- Tinjau log server atau dokumentasi untuk peran atau izin pengguna prasyarat.
Token sering kedaluwarsa dan kamu harus mengautentikasi ulang
- Konfirmasikan bahwa authorization server kamu menerbitkan refresh token.
- Periksa bahwa jam sistem kamu telah disinkronkan untuk mencegah kedaluwarsa token sebelum waktunya.
Kamu ingin keluar atau berganti akun
Hapus atau ganti nama entri server di file konfigurasi kamu dan tambahkan lagi. Bob Shell memperlakukannya sebagai server baru dan memintamu untuk sign in pada koneksi berikutnya.