SORU
26 EYLÜL 2011, PAZARTESİ


OAuth 2.0: sosyal haklar ve davalar — neden kullanılır?

Herkes OAuth2 hakkında neyin iyi ve uygulamamız gerektiğini açıklayabilir mi? Ben bu konuda biraz kafam karıştı çünkü burada geçerli düşüncelerim var

OAuth1 (daha doğrusu) HMAC istekleri mantıklı, kolay anlaşılır, geliştirmek kolay ve gerçekten çok güvenli görünüyor.

OAuth2, bunun yerine, yetkilendirme istekleri, erişim belirteçleri ve yenileme simgeleri getiriyor, ve sonra verileri almak için bir oturum başında 3 isteklerini yapmak zorunda. Ve o zaman bile, isteklerinize birini sonunda token süresi dolduğunda başarısız sona erecek.

Ve başka bir access token, access token aynı zamanda geçirilen bir yenileme token kullanın. Bu erişim belirteci beyhude bir güvenlik bakış açısı getiriyor mu?

Ayrıca /r/netsec gösterdi son olarak, SSL tamamen güvenli değil, güvenli bir HMAC yerine TLS/SSL kullanarak her şeyi elde etmek için itme beni karıştırır.

OAuth 0 güvenlik ile ilgili olduğunu savunarak, ama yayınlanan ve sona erdi. Tam olarak görüş sağlayıcının noktasından umut verici görünmüyor. Taslak 6 farklı akar bahseder zaman elde etmek istediği şey görüyorum ama kafama uygun değil.

Bence olabilir daha fazla mücadele anlamak, yararlar ve mantığa göre aslında sevmediğini, bu yüzden bu olabilir biraz bir haksız saldırı ve üzgünüm eğer bu olabilir gibi bir rant.

CEVAP
26 EYLÜL 2011, PAZARTESİ


Arka plan: OAuth 1.0 ve 2.0 için istemci ve sunucu yığınları yazdım.

Hem 1.0 & 2.0 desteği OAuthiki bacaklı kimlik doğrulamasıbir sunucu bir kullanıcı kimliğinden emin olduğu, ve ., ^strong>üç ayaklı bir kimlikbir sunucu kullanıcı kimliği bir içerik sağlayıcı tarafından sağlanır., Ayaklı üç yetkilendirme istekleri ve erişim belirteçleri oyuna gelmek kimlik doğrulama ve önemli OAuth 1 O sahip olduğunu unutmayın.

Karmaşık bir: üç bacaklı kimlik doğrulaması

OAuth görüşler temel bir noktaiçerik sağlayıcı(Twitter, Facebook vs. vs.) bir sağlamak içinserver(müşteri adına içerik sağlayıcı konuşmak isteyen bir Web uygulaması gibi) istemci, herhangi bir kimliğe sahip. Üç bacaklı kimlik doğrulama sunduğu istemci veya sunucu olmadan bunu yapmak için yeteneğidirbu kimlik bilgilerini bilmek hiç gerek(ör: kullanıcı adı ve parola).

(?) OAuth detayları çok derin mevzular:

  1. İstemci servisi meşru bir müşteri olduğunu doğrular sunucu için yetkilendirme isteği gönderir.
  2. Sunucu kaynaklarına erişim istemek için içerik sağlayıcı istemci yönlendirir.
  3. İçerik sağlayıcı kullanıcı kimliğini doğrular, ve sık sık onların izni kaynaklara erişmek ister.
  4. İçerik sağlayıcı geri istemci sunucuya, başarı ya da başarısızlık bildirmek yönlendirir. Bu istek başarılı bir yetkilendirme kodu içerir.
  5. Sunucu, içerik sağlayıcı ve Borsalar için bant dışı bir istek için bir erişim belirteci yetki kodu yapar.

Sunucu erişim belirteci geçerek kullanıcı adına içerik sağlayıcı için isteklerini yapabilirsiniz.

Her değişimi (istemci->server, server->içerik sağlayıcı) paylaşılan bir sır doğrulama içerir, ama OAuth 1 şifrelenmemiş bir bağlantı üzerinden bu yana, her doğrulama olamaz telsizden gizli geçirir.

Dikkat ettiğiniz gibi bitti, HMAC ile. İstemci yetkilendirme talebi için argümanlar imzalamak için sunucu ile paylaştığı sırrı kullanır. Sunucu istemcinin anahtar ile bağımsız değişkenler, işaretler, kendisi alır ve meşru bir istemci olup olmadığını görmek mümkün (yukarıdaki Adım 1).

Bu imza gerektirir hem istemci hem de sunucu için kabul sipariş değişkenler (yani imzalıyorlar aynı dize) ve başlıca şikayetleri hakkında OAuth 1. Her iki sunucu ve istemciler için sıralama ve işareti aynı şekilde. Bu keman kod ya da değil ya da küçük bir yardım ile 401 Unauthorized olsun. Bu bir istemci yazma engeli artar.

Yetkilendirme isteği SSL OAuth 2.0 üzerinde çalıştırmak için isteyerek kaldırır argümanı için gerek ve tamamen imzalama sıralama. İstemci doğrudan doğrular sunucu kendi gizli geçirir.

Aynı şartları server -^ mevcuttur . içerik sağlayıcı, bağlantı ve SSL yana OAuth hizmetleri erişen bir server yazmak için bir engeli kaldırır.

Bu işler çok yukarıda Adım 1, 2 ve 5 kolaylaştırır.

Bu noktada bizim sunucu kullanıcı adı/parola olan kalıcı bir erişim belirteci kullanıcı eşdeğeri vardır. İstek parçası (sorgu değişkeni, HTTP üstbilgi veya POST form data olarak) simgesi olarak erişim geçerek kullanıcı adına içerik sağlayıcı için isteklerini yapabilirsiniz.

Eğer içeriği hizmet sadece SSL üzerinden erişilebilir ise, işimiz bitti. Eğer düz HTTP üzerinden mevcut ise, kalıcı erişim belirteci bir şekilde korumak istiyoruz. Herkes bağlantı koklama kullanıcının içeriğe erişim sonsuza kadar almak mümkün olacaktır.

OAuth 2 çözüldü bu şekildeyenile simgesi. Refresh token kalıcı şifre eşdeğer hale gelir, vesadece SSL üzerinden iletilir. Sunucu hizmetlere erişim ihtiyacı olduğunda, kısa süreli bir erişim belirteci için yenileme token alışverişi. Bu şekilde tüm sniffable HTTP kere dolacak bir token ile yapılır. Google OAuth 2 API 5 dakikalık bir son kullanma kullanıyor.

Yenileme belirteçleri dışında, OAuth 2 istemci, sunucu ve içerik sağlayıcı arasındaki tüm iletişimi kolaylaştırır. Ve yenileme simgeleri yalnızca içerik şifrelenmemiş erişim sağlanırken güvenlik sağlamak için var.

İki bacaklı kimlik doğrulaması

Bazen, ama, bir sunucu sadece kendi içeriğine erişimi kontrol etmek gerekiyor. İki bacaklı kimlik doğrulaması istemci kullanıcı doğrudan sunucu ile kimlik doğrulaması için izin verir.

OAuth 2 geniş kullanımda olan OAuth 1 için bazı uzantıları standartlaştıran. Benim tanıdığım en iyi xAuth olarak Twitter tarafından kullanılmaya başlandı. Resource Owner Password Credentials OAuth 2'de görebilirsiniz.

Kullanıcı kimlik bilgileri ile müşteri güveniyorsan aslında, () kullanıcı adı ve parola, bu doğrudan erişim simgesi için içerik sağlayıcı ile alışverişi yapabilirsiniz. Bu mobil uygulamalar üzerinde OAuth çok daha yararlı üç bacaklı kimlik doğrulaması yapar, içerik sunucusu ile kimlik doğrulama işlemi işlemek için bir HTTP görüntülemek gömmek için.

OAuth ile 1, Bu resmi standart bir parçası değildi, ve diğer tüm istekleri aynı imza prosedür gerekli.

Ben sadece uygulanan server side OAuth 2 Kaynak Sahibi Parola Kimlik bilgileri ve müşterinin bakış açısı, erişim simgesi haline gelmiştir basit: istek bir erişim belirteci sunucu, geçen istemci ıd/gizli olarak bir HTTP Yetkilendirme başlık ve kullanıcının oturum açma/parola form verilerini.

Avantajı: Sadelik

Bir uygulayıcı bakış açısıyla yani, OAuth 2 görüyorum başlıca avantajları daha az karmaşık. İstek değil zordur ama kesinlikle keman olan prosedür, imza gerektirmez. Sen en çok acıyı en aza indirmek için istediğiniz yere (modern, mobil dünyada) olan büyük bir servis bir müşteri olarak hareket için gerekli azaltır. Bu azaltılmış karmaşıklığı -^ server . içerik sağlayıcı uç veri merkezi içinde users yapar.

Ve standart haline şimdi geniş kullanımda olan 1.0 (NAT-t) OAuth için bazı uzantıları kodlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • Cole Rolland

    Cole Rolland

    23 Kasım 2008
  • Phandroid

    Phandroid

    26 Ocak 2009