SORU
15 AĞUSTOS 2010, Pazar


Neden OAuth v2 Erişim ve Yenileme Belirteçleri De Var Mı?

Bölüm 4.2 taslak OAuth 2.0 protokolünü gösteren bir yetkilendirme sunucusu dönmek de bir access_token (kullanılan kimlik doğrulaması için bir öz kaynak) gibi bir refresh_token, kullanılan tamamen yeni bir access_token:

http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-4.2

Neden her ikisi de var mı? Neden sadece access_token, refresh_token kadar uzun ömürlü ve refresh_token zorunda değil değil mi?

CEVAP
14 EKİM 2012, Pazar


Tartışma bağlantı, Catchdave tarafından sağlanan, valid point başka bir işte yukarıda yazılmış ne ek olarak bahsedilmeye değer olduğuna inandığım Dick Hardt, tarafından yapılmış

Yenileme belirteçleri hatırladığım güvenlik ve iptal oldu. <...>

iptal:eğer access token müstakil, yetkilendirme yeni erişim belirteçleri amir tarafından iptal edilebilir. Bir kaynak yetkilendirme sunucusu erişim belirteci geçerli olup olmadığını görmek için sorgulama gerekmez.Bu erişim belirteci doğrulama kolaylaştırır ve daha kolay ve çok sayıda yetkilendirme sunucuları ölçekte destek sağlıyor. Bir erişim belirteci geçerli zaman bir zaman aralığı var, ama yetki iptal edilir.

Gerçekten de, durum Kaynak Sunucu ve Yetkilendirme Sunucusu aynı varlık ve nerede bağlantı arasında kullanıcı ve ikisini de (genellikle) aynı derecede güvenli, orada değil çok mantıklı tutmak için refresh token ayrı erişim belirteci.

Ancak, belirtildiği gibi alıntı, başka bir rol yenileme belirteçleri olduğunu varsayıyorum erişim belirteci olabilir iptal herhangi bir zamanda Kullanıcı tarafından (via web-arayüzü kendi profilleri, örneğin) süre tutma sistemi ölçeklenebilir aynı zamanda.

Genellikle, jeton alabilir. rastgele tanımlayıcılar işaret için belirli bir kayıt Sunucu veritabanı, ya onlar içeren tüm bilgileri kendilerine (elbette, bu bilgiye sahip olmak imzalanmalı, MAC, örneğin).

Sistem nasıl uzun ömürlü ile erişim belirteçleri çalışması gerekir

Sunucu İstemci için bir belirteç yayımlayarak kapsamları önceden tanımlanmış bir dizi içinde, Kullanıcının veri erişim sağlar. Biz devam etmek istiyorum token geri alınabilir etmeliyiz deposu veritabanı belirteci ile birlikte bayrak "iptal" olması ya da Geri Al (aksi takdirde, bunu nasıl yaparsınız ile kendi kendine yeten token?) Veritabanı olarak çok len(users) x len(registered clients) x len(scopes combination) kayıtları içerebilir. Her API isteği veritabanı vurmak gerekir. Oldukça önemsiz sorgular veritabanı(1), Tek hata noktası O sahne için yapmak olsa da, sistemin ölçülebilirlik ve performans üzerinde olumsuz etkiye sahip kendisi.

Uzun ömürlü yenileme token ve kısa süreli access token ile sistemin nasıl çalışması gerektiğini

Biz iki anahtar konu burada: rasgele yenileme veritabanında ilgili kaydın ile token ve imzalı kendi kendine yeten erişim belirteci içeren diğerleri arasında sona erme zaman damgası alanı.

Erişim belirteci bağımsız olarak, tüm veritabanı geçerliliğini kontrol etmek için vurmak zorunda değiliz. Tek yapmamız gereken, token kodunu çözmek için ve imza ve zaman damgası doğrulamak için.

Yine de, biz hala tutmak için veritabanı yenileme belirteçleri, ama sayı istekleri için bu veritabanı genellikle tarafından tanımlanan bir yaşam erişim belirteci (uzun ömürlü, düşük erişim hızı).

Belirli bir Kullanıcı İstemci erişimini iptal etmek için, karşılık gelen yenileme" (veya tamamen Kaldır ve Kes yeni erişim belirteçleri verme. "iptal edilmiş olarak belirteç mark etmeliyiz Access zaten iptal edildiğinde bir pencere var o kadar belli değil,,, ama bazı erişim belirteçleri yine de kullanıcının veri erişimi olabilir.

Bileşimleri

Yenileme belirteçleri kısmen SPoF (Tek hata Noktası) Access Token veritabanı ortadan kaldırmak, ancak bazı belirgin dezavantajları var.

  1. "". Pencere Olaylar arasında bir süre "kullanıcı erişim iptal" ve "erişimi iptal etmek için garanti edilir".

  2. İstemci mantığı komplikasyonu.

    refresh token olmadan

    • access token ile API isteği gönder
    • eğer access token geçersiz, başarısız ve yeniden kimlik doğrulaması için Kullanıcı isteyin

    ile yenileme göstergesi

    • access token ile API isteği gönder
    • Eğer access token geçersiz, bu yenileme token kullanarak güncellemeyi deneyin
    • eğer yenileme talebi geçerse, erişim simgesi güncellemek ve yeniden göndermek ilk API isteği
    • Eğer yenileme isteği başarısız olursa, yeniden kimlik doğrulaması için Kullanıcı isteyin

Bu cevap mantıklı mı ve biri daha düşünceli karar vermek için yardımcı olur umarım. Tanınmış OAuth2 bazı sağlayıcılar, github ve oturaklı dahil olmak üzere yenileme belirteçleri olmadan protokol kabul ve bundan memnun görünüyor da not etmek isterim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrea Lewis

    Andrea Lewis

    14 Mart 2013
  • EatingIn

    EatingIn

    12 EKİM 2013
  • ThreadBanger

    ThreadBanger

    2 Mart 2007