OAuth 1.0 protokolünün ( RFC 5849 ) güvenliği, bir istemci uygulamasına yerleştirilmiş gizli bir anahtarın gizli tutulabileceği varsayımına dayanır. Ancak, varsayım saftır.
OAuth 2.0'da ( RFC 6749 ), böyle naif bir istemci uygulaması gizli istemci olarak adlandırılır . Öte yandan, gizli anahtarı gizli tutmanın zor olduğu bir ortamda bir müşteri uygulamasına genel istemci denir . Bkz. 2.1. Ayrıntılar için İstemci Türleri .
Bu anlamda, OAuth 1.0 yalnızca gizli istemciler için bir belirtimdir.
" OAuth 2.0 ve Cehenneme Giden Yol ", OAuth 2.0'ın daha az güvenli olduğunu söylüyor, ancak OAuth 1.0 istemcileri ile OAuth 2.0 gizli istemcileri arasında güvenlik düzeyinde pratik bir fark yok. OAuth 1.0 imzanın hesaplanmasını gerektirir, ancak istemci tarafındaki gizli bir anahtarın gizli tutulabileceğinden emin olduğu takdirde güvenliği artırmaz. İmza hesaplaması, herhangi bir pratik güvenlik geliştirmesi olmadan sadece hantal bir hesaplamadır. Bir TLS üzerinden sunucu ve sadece hediyelere bir OAuth 2.0 istemci bağlandığı o sadelik nazaran yani client_id
ve client_secret
hantal hesaplama güvenlik açısından daha iyi olduğu söylenemez.
Buna ek olarak, RFC 5849 (OAuth 1.0) açık yönlendiriciler hakkında hiçbir şeyden bahsetmezken RFC 6749 (OAuth 2.0) bahsetmez . Yani, oauth_callback
OAuth 1.0'ın parametresi bir güvenlik deliği olabilir.
Bu nedenle, OAuth 1.0'ın OAuth 2.0'dan daha güvenli olduğunu düşünmüyorum.
[14 Nisan 2016] Konuyu netleştirmek için ek
OAuth 1.0 güvenliği imza hesaplamasına dayanır. İmza, gizli anahtarın HMAC-SHA1 ( RFC 5849, 3.4.2 ) için paylaşılan bir anahtar veya RSA-SHA1 ( RFC 5849, 3.4.3 ) için özel bir anahtar olduğu gizli bir anahtar kullanılarak hesaplanır . Gizli anahtarı bilen herkes imzayı hesaplayabilir. Eğer gizli anahtar tehlikeye düşerse, imza hesaplamasının karmaşıklığı ne kadar karmaşık olsa da anlamsızdır.
Bu, OAuth 1.0 güvenliğinin imza hesaplama karmaşıklığına ve mantığına değil, yalnızca gizli bir anahtarın gizliliğine bağlı olduğu anlamına gelir. Başka bir deyişle, OAuth 1.0 güvenliği için gereken yalnızca gizli anahtarın gizli tutulması koşuludur. Bu kulağa aşırı gelebilir, ancak koşul zaten yerine getirilmişse imza hesaplaması hiçbir güvenlik geliştirmesi yapmaz.
Aynı şekilde, OAuth 2.0 gizli müşterileri de aynı şarta bağlıdır. Durum zaten tatmin olmuşsa, güvenli bağlantı TLS kullanarak ve gönderme oluştururken herhangi bir sorun client_id
ve client_secret
güvenli bir bağlantı üzerinden bir yetkilendirme sunucusuna? Her ikisi de aynı koşula bağlıysa, OAuth 1.0 ve OAuth 2.0 gizli istemcileri arasında güvenlik düzeyinde büyük bir fark var mı?
OAuth 1.0'ın OAuth 2.0'ı suçlaması için iyi bir neden bulamıyorum. Gerçek şu ki, (1) OAuth 1.0 yalnızca gizli müşteriler için bir spesifikasyon ve (2) OAuth 2.0, gizli müşteriler ve desteklenen genel müşteriler için de protokolü basitleştirdi . İyi bilinip bilinmediğine bakılmaksızın, akıllı telefon uygulamaları OAuth 2.0'dan yararlanan genel istemciler ( RFC 6749, 9 ) olarak sınıflandırılır .