Kurulumların çoğu oturumu Microsoft Entra ID ile açar. Bazıları ise Keycloak kullanır; örneğin Microsoft 365 kiracısı olmayan bir kurulum. AIMO eklentisi ikisinde de aynı şekilde çalışır: hangi kimlik sağlayıcısını kullanacağını ağ geçidine sorar, dolayısıyla kimse VS Code içinde Keycloak ayarı yapmaz. Değişen iki şey var: oturum açtığınız sayfa ve yöneticinin önceden hazır etmesi gerekenler.
Bu makale 15 ve 16 Ekim 2026’da denendi. Marketplace sürümü 1.2.1 temiz bir VS Code profiline kuruldu, canlı bir Keycloak kurulumunda mevcut bir üye hesabıyla oturum açıldı; aşağıdaki adımlar ve yanıtlar o denemeden alındı.

Kim ne yapar
| Adım | Kim | Nerede |
|---|---|---|
| Ağ geçidinin Keycloak’u bildirdiğini kontrol etmek | Yönetici | Terminal, bir kez |
| Kasanın eklentinin oturum açmasını kabul ettiğini kontrol etmek | Yönetici | Terminal, bir kez |
| Eklentiyi kurmak ve ağ geçidi adresini girmek | Her kişi | VS Code |
| Keycloak ile oturum açmak | Her kişi | VS Code ve tarayıcı |
| Kasada oturum açmak | Her kişi | VS Code ve tarayıcı |
Bölüm 1: yöneticinin kontrolleri
Buradaki hiçbir şey VS Code’a özgü değil; işin özü de bu: eklenti, kurulumun zaten yayımladığı bilgileri kullanır. İki kontrol, insanların oturum açabileceğini gösterir.
-
Ağ geçidi Keycloak’u bildiriyor mu? Anahtar gerektirmeyen genel yapılandırma uç noktasına sorun:
curl -s https://ai.corp.example/api/identity/config | jqCanlı yanıt şuydu; yalnızca sunucu adları değiştirildi:
{ "authRequired": false, "entra": null, "oidc": { "apiAudience": [ "gpupool-api" ], "apiScope": "gpupool-api", "clientId": "gpupool-vscode", "endpoints": { "authorization": "https://auth.corp.example/realms/gpupool/protocol/openid-connect/auth", "deviceAuthorization": "https://auth.corp.example/realms/gpupool/protocol/openid-connect/auth/device", "endSession": "https://auth.corp.example/realms/gpupool/protocol/openid-connect/logout", "jwks": "https://auth.corp.example/realms/gpupool/protocol/openid-connect/certs", "token": "https://auth.corp.example/realms/gpupool/protocol/openid-connect/token" }, "issuer": "https://auth.corp.example/realms/gpupool", "provider": "generic", "scopes": "openid profile email" }, "tokenEndpoint": "/api/identity/token" }Her bölüm size şunu söyler:
entradeğerinull,oidc.providerdeğerigeneric: oturum Entra ID ile değil Keycloak ile açılır.issuerKeycloak realm’inizdir. Realm’in adı her kurulumdagpupool’dur.clientId, eklentinin oturum açarken kullandığı realm istemcisidir:gpupool-vscode.apiScope, eklentinin isteğe eklediği kapsamdır; erişim belirtecininapiAudienceiçindeki hedef kitleyi taşımasını sağlar. Ağ geçidi kişinin anahtarını üretirken bu hedef kitleyi kabul eder.scopesolağan oturum açma kapsamlarıdır. Eklenti ayrıcaoffline_accessister; böylece oturumu yeniden sormadan yenileyebilir.endpoints, realm’in kendi keşif (discovery) belgesinden kopyalanır. EklentideviceAuthorizationvetokenuç noktalarını kullanır.tokenEndpoint, eklentinin Keycloak belirtecini kişinin platform anahtarıyla değiştirdiği yerdir.authRequired, ağ geçidinin her isteğin arkasında bir kişi olmasını şart koşup koşmadığını gösterir. Eklenti her zaman bir kişinin oturumunu açtığı için onun açısından bir şey değiştirmez.
endpointsistemciden değil realm’den geldiği içindeviceAuthorizationalanının bulunması, VS Code istemcisinin onu kullanabileceğini kanıtlamaz. Eklentinin yaptığı gibi bir cihaz kodu isteyin:curl -s -X POST -d client_id=gpupool-vscode -d 'scope=openid profile email offline_access gpupool-api' https://auth.corp.example/realms/gpupool/protocol/openid-connect/auth/device | jqDoğru ayarlanmış bir istemci on dakika geçerli bir kodla yanıt verir:
{ "device_code": "…", "user_code": "ABCD-EFGH", "verification_uri": "https://auth.corp.example/realms/gpupool/device", "verification_uri_complete": "https://auth.corp.example/realms/gpupool/device?user_code=ABCD-EFGH", "expires_in": 600, "interval": 5 }O istemcide cihaz yetkilendirmesi (device grant) kapalıysa Keycloak reddeder:
{ "error": "unauthorized_client", "error_description": "Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client." }Kodu kullanmanız gerekmez; süresi kendiliğinden dolar.
-
Kasa, eklentinin oturum açmasını kabul ediyor mu? Eklenti OpenBao’da
baokomut satırı aracıyla aynı yoldan oturum açar; tarayıcıhttp://localhost:8250/oidc/callbackadresine geri döner. OpenBao’dan bu dönüş adresiyle bir oturum açma adresi isteyin:curl -s -X POST -d '{"role":"user","redirect_uri":"http://localhost:8250/oidc/callback"}' https://bao.corp.example/v1/auth/oidc/oidc/auth_urlOpenBao, Keycloak’unuzu gösteren bir
auth_urldöndürür. Bu adresi tarayıcıda açın: Keycloak oturum açma sayfası geliyorsa dönüş adresine izin verilmiş demektir. Yanlış bir adresi reddeden OpenBao değil Keycloak’tur: Invalid parameter: redirect_uri iletisi, kasanın Keycloak istemcisindehttp://localhost:8250/oidc/callbackadresinin henüz tanımlı olmadığını gösterir. Oturum açmayı tamamlamanız gerekmez.
Eklenti kasayı kendisi bulur: ağ geçidinin sunucu adındaki ilk etiketi bao ile
değiştirir; ai.corp.example adresinden bao.corp.example çıkar. Kasanız başka bir
adresteyse herkes aimo.vault.address ayarını kendisi girer.
Bölüm 2: her kişi
- Eklentiyi kurun. Extensions görünümünde AIMO diye arayın ya da AIMO for VS Code sayfasındaki indirmeyi kurun. Eklentiler bir VS Code profiline kurulur: pencereniz hangi profili kullanıyorsa ona kurun.
- Ağ geçidini girin. İlk seferde AIMO ağ geçidi adresini sorar. Yöneticinizin verdiği
adresi girin, örneğin
https://ai.corp.example. - Oturum açın. AIMO: Sign in komutunu çalıştırın. Kısa bir kod panonuza kopyalanır ve tarayıcınız kurulumunuzun Keycloak cihaz sayfasını açar. Kodu yapıştırın, her zamanki Keycloak hesabınızla oturum açın ve onaylayın. Kod on dakika geçerlidir.
- Kendi anahtarınız. AIMO bu oturumu sizin kişisel platform anahtarınızla değiştirir ve anahtarı VS Code’un gizli deposunda saklar. Bu anahtar yalnızca eklentiye aittir; başka istemciler için tuttuğunuz anahtarlara dokunulmaz. İkinci bir makinede oturum açarsanız yeni bir anahtar alırsınız; ilk makine bir sonraki isteğinde yenisini kendiliğinden alır.
- Sohbet edin. AIMO görünümünü açın ve açık klasör hakkında bir şey sorun. Bir model seçmediyseniz AIMO profilinizin varsayılan modelini ya da listeden uygun birini kullanır; başkasını AIMO: Select Model ile seçin. Evren modelleri gibi sizin kendi anahtarınızla çalışan modeller için o anahtarı önce My variables sayfasına kaydedin.
- Kasada oturum açın. AIMO Vault: Sign in to the Vault komutunu çalıştırın. Tarayıcı
Keycloak’u yeniden açar (genellikle oturumunuz hâlâ açıktır) ve
localhost:8250adresine döner. Ardından Vault görünümü kişisel kasanızı ve üyesi olduğunuz takım kasalarını gösterir. Oturum sekiz saat sürer ve kendini en fazla bir güne kadar yeniler.

Canlı denemede ilk oturum kişinin kendi anahtarını oluşturdu, sohbet turları tek bir sohbet
oturumu altında vscode etiketiyle denetim kaydına düştü ve model, kişi her işlemi onayladıktan
sonra klasördeki dosyaları okudu, düzenledi ve çalıştırdı.
aimo’da aynı hesap
Eklenti ile web sohbeti aimo aynı Keycloak hesabını kullanır. aimo’da e-posta ve parola formu yerine tek oturum açma (single sign-on) düğmesini kullanın: gruplarınız, dolayısıyla arama yapabileceğiniz belge koleksiyonları, yalnızca Keycloak üzerinden oturum açtığınızda güncellenir.
Bir şey çalışmadığında
| Ne görüyorsunuz | Ne yapmalısınız |
|---|---|
could not reach …/api/identity/config |
Ağ geçidi adresi yanlış ya da ona ulaşan bir ağda değilsiniz. Adresi AIMO: Set Gateway URL ile değiştirin |
the gateway has no identity configuration |
Ağ geçidi oturum açma ayarlarını yayımlamıyor. Yöneticinizden Bölüm 1’deki ilk kontrolü yapmasını isteyin |
| Keycloak sayfası kodun geçersiz ya da süresinin dolmuş olduğunu söylüyor | AIMO: Sign in komutunu yeniden çalıştırın; bir kod on dakika yaşar |
Kasa oturumunda port 8250 is busy |
Başka bir kasa oturumu ya da bao aracı o portta bekliyor. Onu tamamlayın ya da iptal edin |
| Kasa oturum sayfası açılıyor ama sonra hiçbir şey olmuyor | Uzak bir penceredesiniz (SSH, konteyner). 8250 portunu yönlendirin ya da yerel bir pencereden oturum açın |
| Bir model kendi anahtarınıza ihtiyaç duyduğunu söylüyor | O anahtarı My variables sayfasına kaydedin, sonra yeniden sorun |
| Hiçbir adres çözülmüyor | Özel bir ağdaki kurulum yalnızca o ağdan yanıt verir |
Yapılandırmasını yayımlamayan bir kurulum için oturum açma ayarları aimo.issuer,
aimo.clientId ve aimo.apiScope ile elle verilebilir. Bu ayarlar yalnızca kullanıcı
ayarlarınızda girilebilir; açtığınız bir depo onları değiştiremez.