Cookie, session ve CSRF
HTTP oturumunuzu WebSocket handshake kimliğine bağlayın; Origin, session doğrulaması ve mesaj yetkisini birlikte uygulayın.
WebSocket'te browser oturumu, HTTP login ve cookie akışıyla başlayabilir. Lily'nin bağlama noktası normalized Upgrade header'ları ve identity middleware'dir. HTTP'deki cookie veya CSRF builder API'lerini burada hazır eşdeğer varmış gibi kullanmayın.
Oturum akışı#
- Login, session kaydı ve cookie üretimini HTTP uygulamanızda kurun.
- Browser kendi cookie kurallarına göre Upgrade isteği gönderir.
- Identity middleware Cookie header'ını uygulamanızın cookie/session doğrulayıcısına verir.
- Doğrulayıcı geçerli Principal, owned tenant bilgisi ve gerekiyorsa expiry üretir.
- Mesaj guard'ları her işlem için scope, rol ve nesne yetkisini uygular.
Cookie mekanizmasının HTTP tarafı cookie, session modeli authorization ve sessions rehberinde yer alır. Bunlar ayrı HTTP uygulamasının kurulumudur; WebSocket oturumu kendiliğinden aynı state'e bağlanmaz.
Cookie’yi okuyun#
Identity callback içinde header'a erişim:
let cookie_header = exchange.request().headers()
.get_custom_header("cookie");Bu değer ham header metnidir. Güvenilir cookie parser ve session store kullanarak cookie adını seçin; eksik, süresi dolmuş veya iptal edilmiş session'ı 101 öncesinde reddedin. Basit string bölmeyle elde edilen subject'i doğrulanmış Principal kabul etmeyin. Authentication örneğindeki verifier interface'ini session sonucuna uyarlayın.
Browser WebSocket constructor'ında keyfi header seçeneği yoktur. Cookie'nin gönderilip gönderilmeyeceği browser'ın cookie ve erişim kurallarına tabidir; açılış handshake standardı bu akışı tanımlar. Başarılı 101 response'una keyfi Set-Cookie ekleme hook'u bu API'de yoktur; oturum üretimi/yenilemesini HTTP'de yapın.
Cross-site erişim politikası#
Kesin Origin allow-list'i, session doğrulaması ve uygulamanız gerekiyorsa ek handshake/session binding politikası birlikte çalışır. Origin kimlik doğrulama yerine geçmez. Bir DTO'ya csrf_token alanı eklemek de kendi başına doğrulama veya cross-site koruması oluşturmaz.
Bu sürümde hazır WS-CSRF middleware/store API'si yoktur. HTTP CsrfService/CsrfGuard örneğini WS builder'a kopyalamayın. Hangi session'ın hangi bağlantıyı açabildiğini, session iptalini ve yenileme davranışını uygulama protokolünüzde açıkça belirleyin.
Uzun yaşayan bağlantı#
HTTP session yenilemesi açık socket'in Principal'ını otomatik değiştirmez. Yeni credential doğrulandıktan sonra revision kontrollü refresh kullanın. Expiry ile revocation da aynı olay değildir; revoke bilgisini verifier/store politikanız izler.
Genel purpose query accessor'ı veya subprotocol adına gizlenmiş credential bu crate'in sağladığı authentication yolu değildir. Tarayıcı örneğini session akışıyla, servis istemcisini açık Authorization header doğrulamasıyla kurun.
Bu sayfanın kaynakları v0.1.0
Anlatım, incelenen framework commit’ine dayanır.