Bosphorus

← Bilgi bankası

Keycloak kullanan bir kurulumda AIMO for VS Code

Oturumun Entra ID yerine Keycloak ile açıldığı kurulumda AIMO eklentisi: yöneticinin kontrolleri, kişinin oturum açması ve kasa oturumu.

VS CodeKeycloakOturum açmaKasaÜrün üzerinde doğrulandığı tarih:

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ı.

Keycloak kurulumunda oturum açmış AIMO eklentisi: düzenlediği dosyanın yanında sohbet ve araç sunucuları

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.

  1. 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 | jq
    

    Canlı 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:

    • entra değeri null, oidc.provider değeri generic: oturum Entra ID ile değil Keycloak ile açılır.
    • issuer Keycloak realm’inizdir. Realm’in adı her kurulumda gpupool’dur.
    • clientId, eklentinin oturum açarken kullandığı realm istemcisidir: gpupool-vscode.
    • apiScope, eklentinin isteğe eklediği kapsamdır; erişim belirtecinin apiAudience içindeki hedef kitleyi taşımasını sağlar. Ağ geçidi kişinin anahtarını üretirken bu hedef kitleyi kabul eder.
    • scopes olağan oturum açma kapsamlarıdır. Eklenti ayrıca offline_access ister; böylece oturumu yeniden sormadan yenileyebilir.
    • endpoints, realm’in kendi keşif (discovery) belgesinden kopyalanır. Eklenti deviceAuthorization ve token uç 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.

    endpoints istemciden değil realm’den geldiği için deviceAuthorization alanı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 | jq
    

    Doğ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.

  2. Kasa, eklentinin oturum açmasını kabul ediyor mu? Eklenti OpenBao’da bao komut satırı aracıyla aynı yoldan oturum açar; tarayıcı http://localhost:8250/oidc/callback adresine 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_url
    

    OpenBao, Keycloak’unuzu gösteren bir auth_url dö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 istemcisinde http://localhost:8250/oidc/callback adresinin 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

  1. 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.
  2. Ağ geçidini girin. İlk seferde AIMO ağ geçidi adresini sorar. Yöneticinizin verdiği adresi girin, örneğin https://ai.corp.example.
  3. 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.
  4. 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.
  5. 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.
  6. 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:8250 adresine 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.

AIMO kenar çubuğunun alt kısmı: yüklenmiş ya da isteğe bağlı araç sunucuları ve kasa oturumundan sonra kişisel kasa

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.