Cihaz Bağlı Oturumu Kimlik Bilgileri (DBSC)

Cihaz Bağlı Oturumu Kimlik Bilgileri (DBSC), donanım destekli oturum güvenliği ekleyerek kimlik doğrulamayı güçlendirir.

Daniel Rubery
Daniel Rubery

Giriş

Birçok web sitesi, kullanıcı kimlik doğrulaması için uzun ömürlü çerezlere güvenir ancak bu çerezler oturum ele geçirmeye karşı savunmasızdır. Cihaza bağlı oturum kimlik bilgileri (DBSC), bu riski azaltmak için donanım destekli bir güvenlik katmanı ekleyerek oturumların belirli cihazlara bağlanmasını sağlar.

Bu kılavuz, web uygulamalarında kimlik doğrulama akışlarını yöneten geliştiriciler için hazırlanmıştır. Bu makalede, DBSC'nin işleyiş şekli ve sitenize nasıl entegre edileceği açıklanmaktadır.

Cihaza bağlı oturum açma kimlik bilgilerinin işleyiş şekli

DBSC, yüksek düzeyde kullanıcının cihazıyla ilişkili bir kriptografik anahtar çifti sunar. Chrome, giriş sırasında bu anahtar çiftini oluşturur ve özel anahtarı, varsa Güvenilir Platform Modülü (TPM) gibi güvenli donanımlarda depolar. Oturumlar kısa ömürlü çerezleri kullanır. Bu çerezlerden birinin süresi dolduktan sonra Chrome, çerezleri yenilemeden önce özel anahtara sahip olduğunu kanıtlar. Bu işlem, oturum sürekliliğini orijinal cihaza bağlar.

Kullanıcının cihazı güvenli anahtar depolama alanını desteklemiyorsa DBSC, kimlik doğrulama akışını kesintiye uğratmadan standart davranışa sorunsuz bir şekilde geri döner.

Uygulamaya genel bakış

DBSC'yi uygulamanıza entegre etmek için aşağıdaki değişiklikleri yapmanız gerekir:

  • Oturum açma akışınızı Sec-Session-Registration üstbilgisi içerecek şekilde değiştirin.
  • Aşağıdakileri yapan bir oturum kaydı uç noktası ekleyin:
    • Ortak anahtarı kullanıcının oturumuyla ilişkilendirir.
    • Oturum yapılandırmasını sunar.
    • Kısa ömürlü çerezlere geçiş.
  • Çerez yenileme ve anahtar bulundurma doğrulamasını işlemek için bir yenileme uç noktası ekleyin.

Mevcut uç noktalarınızın çoğunda herhangi bir değişiklik yapmanız gerekmez. DBSC, eklemeli ve kesintisiz olacak şekilde tasarlanmıştır.

Gerekli kısa ömürlü bir çerez eksikse veya süresinin dolmasına az kaldıysa Chrome isteği duraklatır ve çerezi yenilemeye çalışır. Bu sayede uygulamanız, kullanıcının oturum açtığını onaylamak için normal oturum çerez kontrollerini kullanmaya devam edebilir. Bu, tipik kimlik doğrulama akışlarıyla eşleştiğinden DBSC, giriş mantığınızda minimum düzeyde değişiklikle çalışır.

Uygulama adımları

Bu bölümde, giriş akışınızı değiştirme, oturum kaydını işleme ve kısa süreli çerez yenilemelerini yönetme gibi kimlik doğrulama sisteminizde yapılması gereken değişiklikler açıklanmaktadır. Her adım, mevcut altyapınızla sorunsuz bir şekilde entegre olacak şekilde tasarlanmıştır.

Uygulama adımları, DBSC etkinken oturum açmış bir kullanıcının deneyimleyeceği genel akışı izler: Giriş sırasında kayıt, ardından düzenli olarak kısa süreli çerez yenilemeleri. Uygulamanızın oturum hassasiyet düzeyine bağlı olarak her adımı bağımsız olarak test edebilir ve uygulayabilirsiniz.

DBSC akışını gösteren şema

1. Giriş akışını değiştirme

Kullanıcı giriş yaptıktan sonra uzun ömürlü bir çerez ve Sec-Session-Registration başlığıyla yanıt verin. Örneğin:

Başarılı oturum kaydı sonrasında aşağıdaki HTTP yanıt başlığı döndürülür:

HTTP/1.1 200 OK
Sec-Session-Registration: (ES256 RS256); path="/StartSession"
Set-Cookie: auth_cookie=session_id; max-age=2592000; Domain=example.com; Secure; SameSite=Lax

Cihaz güvenli anahtar depolama özelliğini destekliyorsa Chrome, JSON Web Token (JWT) içinde ortak anahtar kullanarak /StartSessionuç noktasıyla iletişim kurar.

Bu örnekteki auth_cookie, oturum jetonunuzu temsil eder. Oturum yapılandırmanızdaki name alanıyla eşleştiği ve uygulamanız genelinde tutarlı bir şekilde kullanıldığı sürece bu çerezi istediğiniz gibi adlandırabilirsiniz.

2. Oturum kaydı uç noktasını uygulama

/StartSession'te sunucunuz:

  • Alınan ortak anahtarı kullanıcının oturumuyla ilişkilendirin.
  • Oturum yapılandırmasıyla yanıt verin.
  • Uzun ömürlü çerezi kısa ömürlü bir çerezle değiştirin.

Aşağıdaki örnekte, kısa ömürlü çerez 10 dakika sonra geçerlilik süresi dolacak şekilde yapılandırılmıştır:

HTTP/1.1 200 OK
Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; # Expires after 10 minutesSet-Cookie: Domain=example.com; Secure; SameSite=Lax

{
  "session_identifier": "session_id",
  "refresh_url": "/RefreshEndpoint",
  "scope": {
    "origin": "https://example.com",
    "include_site": true,
    "scope_specification": [
      { "type": "exclude", "domain": "*.example.com", "path": "/static" }
    ]
  },
  "credentials": [{
    "type": "cookie",
    "name": "auth_cookie",
    "attributes": "Domain=example.com; Secure; SameSite=Lax"
  }]
}

3. Yenileme uç noktasını uygulama

Kısa süreli çerezin süresi dolduğunda Chrome, özel anahtara sahip olduğunu kanıtlamak için bir yenileme akışı başlatır. Bu işlem, hem Chrome hem de sunucunuz tarafından koordineli işlemler içerir:

  1. Chrome, kullanıcının isteğini uygulamanıza erteler ve /RefreshEndpoint adresine yenileme isteği gönderir:

    POST /RefreshEndpoint HTTP/1.1
    Sec-Session-Id: session_id
    
  2. Sunucunuz bir istekle yanıt verir:

    HTTP/1.1 401 Unauthorized
    Sec-Session-Challenge: "challenge_value"
    
  3. Chrome, depolanan özel anahtarı kullanarak istemi imzalar ve isteği yeniden dener:

    POST /RefreshEndpoint HTTP/1.1
    Sec-Session-Id: session_id
    Sec-Session-Response: <JWT proof>
    
  4. Sunucunuz, imzalı kanıtı doğrular ve yenilenmiş kısa ömürlü bir çerez yayınlar:

    HTTP/1.1 200 OK
    
    Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax
    
  5. Chrome, yenilenen çerezi alır ve ertelenen orijinal isteği devam ettirir.

Alternatif entegrasyon modeli

Siteler, kısa ömürlü çerezin yanı sıra DBSC olmayan ikinci bir çerez ekleyerek esnekliği artırabilir. Bu uzun ömürlü çerez yalnızca yeni kısa ömürlü jetonlar yayınlamak için kullanılır ve kimliği doğrulanmamış istekler ile geçici DBSC hataları arasında ayrım yapmaya yardımcı olur.

  • DBSC başarısız olsa bile uzun ömürlü çerez devam eder.
  • Kısa ömürlü çerez, DBSC kullanılarak yenilenir ve hassas işlemler için gereklidir.

Bu kalıp, sitelere uç durumlarla nasıl başa çıkılacağı konusunda daha fazla kontrol sağlar.

Uyarılar ve yedek davranış

Chrome, aşağıdaki senaryolarda DBSC işlemlerini atlayabilir ve DBSC tarafından yönetilen kısa ömürlü çerez olmadan istek gönderebilir:

  • Ağ hataları veya sunucu sorunları nedeniyle yenileme uç noktasına ulaşılamıyor.
  • TPM meşgul veya imzalama hataları ile karşılaşıyor. TPM, sistem işlemleri arasında paylaşıldığı için aşırı yenilemeler, hız sınırlarını aşabilir.
  • DBSC tarafından yönetilen kısa ömürlü çerez bir üçüncü taraf çerezidir ve kullanıcı, tarayıcı ayarlarında üçüncü taraf çerezlerini engellemiştir.

Bu durumlarda Chrome, hâlâ mevcutsa uzun ömürlü çerezi kullanır. Bu yedek çözüm yalnızca uygulamanız hem uzun ömürlü hem de kısa ömürlü bir çerez içeriyorsa çalışır. Aksi takdirde Chrome, isteği çerez olmadan gönderir.

Özet

Cihaz bağlı oturum kimlik bilgileri, uygulamanızda minimum düzeyde değişiklik yaparak oturum güvenliğini artırır. Oturumları belirli cihazlara bağlayarak oturum çalma işlemlerine karşı daha güçlü koruma sağlarlar. Çoğu kullanıcı herhangi bir kesinti yaşamadan bu hizmetten yararlanır ve DBSC, desteklenmeyen donanıma sorunsuz bir şekilde geçiş yapar.

Daha fazla bilgi için DBSC spesifikasyonuna bakın.