OpenID Connect Belirteç Yeniden Kullanımı
LibreChat ile OpenID Connect belirteç yeniden kullanımını yapılandırma
LibreChat, kullanıcı kimlik doğrulama durumunu yönetmek için OpenID Connect sağlayıcınız (Azure Entra ID veya Auth0 gibi) tarafından verilen erişim ve yenileme belirteçlerinin (access and refresh tokens) yeniden kullanılmasını destekler. Bu özellik etkinleştirildiğinde, kullanıcıya çerez olarak iletilen yenileme belirteci, LibreChat yerine OpenID sağlayıcınız tarafından verilir; bu da LibreChat sunucularının bunu yenilemesine ve sağlayıcınızdan erişim belirteçleri talep etmesine olanak tanır.
Ön Koşullar
- Yapılandırılmış bir OpenID Connect sağlayıcısı (Azure Entra ID, Auth0 vb. gibi)
- Temel OpenID Connect kurulumu tamamlandı
Yapılandırma Adımları
OPENID_REUSE_TOKENS=truedeğerini ortam değişkenlerinize (environment variables) ekleyin.
Sağlayıcıya Özel Yapılandırma
Auth0 Yapılandırması
Auth0 için önemli
Token yeniden kullanımı ile Auth0 kullanırken, OPENID_AUDIENCE ortam değişkenini mutlaka yapılandırmanız gerekir. Bu değişken olmadan Auth0, LibreChat tarafından doğrulanamayan opak (opaque) token'lar döndürür ve bu da sonsuz yenileme döngülerine neden olur.
Auth0 için şunları yapmanız gerekir:
-
Auth0'da bir API oluşturun (JWT erişim belirteçleri için gereklidir):
- Auth0 Dashboard → Applications → APIs kısmına gidin
- "Create API" öğesine tıklayın
- Bir Identifier (örneğin
https://api.librechat.com) ayarlayın - API ayarlarında "Allow Offline Access" seçeneğini etkinleştirin
-
Gerekli ortam değişkenlerini ayarlayın:
# Required for Auth0 OPENID_AUDIENCE=https://api.librechat.com # Your API identifier from Auth0 OPENID_SCOPE=openid profile email offline_access
Ayrıntılı Auth0 yapılandırması için bkz: Auth0 OpenID Connect Configuration
Azure Entra ID Yapılandırması
- OpenID sağlayıcınızı yapılandırın (örnek olarak Azure Entra ID kullanarak):
- Azure Portal'a gidin ve uygulama kaydınıza (app registration) gidin
- Sol menüdeki "Expose API" seçeneğine tıklayın
- "Application ID URI" ifadesinin yanındaki "Add" düğmesine tıklayın
- API URI adresinizi girin (örneğin, "api://librechat") ve kaydedin
- Bir API kapsamı oluşturun:
- "Expose API" bölümünde, "Add a scope" seçeneğine tıklayın
- Kapsamı uygun izinlerle yapılandırın
- Kapsam yapılandırmasını kaydet
- API izinlerini yapılandırın:
- Sol menüdeki "API permissions" kısmına gidin
- "Add a permission" öğesine tıklayın
- "APIs my organization uses" altında uygulamanızı arayın
- "Delegated permissions" seçeneğini belirleyin ve uygun kapsamı (örneğin, "access_user") seçin
-
Ortamınızda gerekli kapsamı (scope) ayarlayın:
OPENID_SCOPE=api://librechat/.default openid profile email offline_accessNot: Yeniden kullanım için bir yenileme belirteci (refresh token) elde etmek amacıyla
offline_accesskapsamı gereklidir. -
Yönetici onayı verin:
- Azure Portal'da Enterprise Applications (Kurumsal Uygulamalar) kısmına gidin
- LibreChat uygulamanızı bulun
- Güvenlik (Security) > İzinler (Permissions) kısmına gidin
- "Grant admin consent" düğmesine tıklayın
- Açılır pencerede istenen izinleri kabul edin
- LibreChat önbelleğini temizleyin ve servisi yeniden başlatın.
Microsoft Graph API Entegrasyonu
Token yeniden kullanımı ile Azure Entra ID kullanırken, gelişmiş kişi ve grup arama özellikleri için Microsoft Graph API entegrasyonunu da etkinleştirebilirsiniz. Daha fazla ayrıntı için Microsoft Graph API Entegrasyonu bölümüne bakın.
Ortam Değişkenleri
# OpenID Token Reuse Configuration
OPENID_REUSE_TOKENS=true
OPENID_SCOPE=api://librechat/.default openid profile email offline_access
OPENID_REUSE_MAX_SESSION_AGE_MS=900000 # 15 minutes in milliseconds
# Required for Auth0 (use your API identifier)
# OPENID_AUDIENCE=https://api.librechat.com
# Caching Configuration
OPENID_JWKS_URL_CACHE_ENABLED=true
OPENID_JWKS_URL_CACHE_TIME=600000 # 10 minutes in milliseconds
# Azure-specific Configuration
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
# Logout Configuration
OPENID_USE_END_SESSION_ENDPOINT=true
# Maximum logout URL length before using logout_hint instead of id_token_hint (default: 2000)
# OPENID_MAX_LOGOUT_URL_LENGTH=2000Ek Yapılandırma Seçenekleri
OPENID_AUDIENCE: JWT doğrulama ve yetkilendirme istekleri için hedef kitle (audience) değeri. Opak belirteçler (opaque tokens) yerine JWT erişim belirteçleri almak için Auth0 için gereklidir. JWT doğrulaması için virgülle ayrılmış değerler kabul edilir; yetkilendirme istekleri boş olmayan ilk değeri kullanır.OPENID_REUSE_MAX_SESSION_AGE_MS: LibreChat'in bir IdP yenilemesini zorunlu kılmasından önce yeniden kullanılan bir OpenID oturum belirtecinin sunulabileceği maksimum süre (varsayılan: 900000 ms / 15 dakika).60 * 60 * 24 * 1000gibi aritmetik ifadeleri kabul eder. Sağlayıcınız her yenilemede önceki erişim belirtecini iptal ediyorsa, bu değeri IdP erişim belirteci ömrünüze doğru artırın.OPENID_JWKS_URL_CACHE_ENABLED: JWKS endpoint'ine aşırı HTTP isteği gönderilmesini önlemek için imza anahtarı doğrulama sonuçlarının önbelleğe alınmasını sağlarOPENID_JWKS_URL_CACHE_TIME: Milisaniye cinsinden önbellek süresi (varsayılan: 600000 ms / 10 dakika)OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED: Kullanıcı bilgileri için on-behalf-of akışını etkinleştirir (Azure'a özeldir)OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE: On-behalf-of akışında kullanıcı bilgisi için kapsam (Azure'a özel)OPENID_USE_END_SESSION_ENDPOINT: Çıkış yapmak için end session endpoint kullanımını etkinleştirirOPENID_MAX_LOGOUT_URL_LENGTH: URI çok uzun hatalarını önlemek içinid_token_hintyerinelogout_hintkullanılmadan önceki maksimum URL uzunluğu (varsayılan: 2000)
Güvenlik Hususları
- Düzgün token depolama ve işleme sağladığınızdan emin olun
- Uygun token yenileme mekanizmalarını uygulayın
- Token kullanımını izleyin ve gerekirse hız sınırlaması (rate limiting) uygulayın
- İstemci sırlarını düzenli olarak değiştirin
- Token depolaması için güvenli çerez ayarlarını kullanın
Sorun Giderme
Token yeniden kullanımıyla ilgili sorunlarla karşılaşırsanız:
- Gerekli tüm kapsamların düzgün bir şekilde yapılandırıldığını doğrulayın
- Yönetici onayının verildiğinden emin olun
- API izinlerinin doğru şekilde ayarlandığından emin olun
- Token önbelleğinin beklendiği gibi çalıştığını doğrulayın
- Herhangi bir kimlik doğrulama hatası olup olmadığını görmek için uygulama günlüklerini kontrol edin
- Ortam değişkenlerinizde
DEBUG_OPENID_REQUESTS=trueayarını yaparak, URL'lere ek olarak istek başlıklarını (hassas veriler maskelenmiş şekilde) görmek için ayrıntılı OpenID istek başlığı günlüğünü etkinleştirin.
Bu rehber nasıl?