OAuth (Açık Yetkilendirme) tam olarak nedir?


Yanıtlar:


327

OAuth (Açık Yetkilendirme) tam olarak nedir?

OAuth, bir kaynak sağlayıcısına (örneğin Facebook) kaynak sahibinin (örneğin siz) üçüncü taraflara (örneğin bir Facebook Uygulaması) bilgilerine (örn. Arkadaşlarınızın listesi ) erişmesine izin verdiğini bildirmesine izin verir .

Eğer açıkça ifade ederseniz, karışıklığınızı anlarım. Şimdi somut bir örnekle devam edelim: bir başka sosyal ağa katılmak!

Mevcut bir GMail hesabınız olduğunu varsayalım. LinkedIn'e katılın ve LinkedIn'e katılın. Birçok arkadaşınızın tümünü manuel olarak eklemek yorucu ve hataya açıktır. Davet için e-posta adreslerine yarıdan binebilir veya yazım hatası ekleyebilirsiniz. Sonuçta hesap oluşturmamaya cazip gelebilirsiniz.

Bu durumla karşı karşıya olan LinkedIn, arkadaşlarınızın listesini otomatik olarak ekleyen bir program yazmak için İyi Fikir'e (TM) sahiptir, çünkü bilgisayarlar yorucu ve hataya eğilimli görevlerde çok daha verimli ve etkilidir. Ağa katılmak artık çok kolay olduğundan, böyle bir teklifi reddetmenin bir yolu yok , şimdi olur mu?

Bu kişi listesini değiştirmek için bir API olmadan, LinkedIn'e GMail hesabınıza kullanıcı adını ve şifreyi vermeniz, böylece onlara çok fazla güç vermeniz gerekir .

OAuth devreye giriyor. GMail'iniz OAuth protokolünü destekliyorsa LinkedIn, GMail kişiler listenize erişmeleri için onları yetkilendirmenizi isteyebilir.

OAuth şunları sağlar:

  1. Farklı erişim seviyeleri: salt okunur VS okuma-yazma. Bu, kullanıcı listenize erişim veya yeni LinkedIn arkadaşlarınızı GMail kişilerinizle otomatik olarak senkronize etmek için iki yönlü erişim izni vermenizi sağlar.
  2. Erişim ayrıntı düzeyi: yalnızca iletişim bilgilerinize (kullanıcı adı, e-posta, doğum tarihi vb.) Veya tüm arkadaş listenize, takviminize ve nelere izin vermemeye karar verebilirsiniz.
  3. Kaynak sağlayıcısının uygulamasından erişimi yönetmenizi sağlar. Üçüncü taraf uygulaması, erişimi iptal etmek için bir mekanizma sağlamazsa, bilgilerinize erişimi olan kullanıcılara takılırsınız. OAuth ile, erişimi istediğiniz zaman iptal etme hükmü vardır.

Yakın gelecekte fiili (standart?) Olacak mı?

OAuth ileriye doğru önemli bir adım olsa da, insanlar doğru kullanmazsa sorunları çözmez. Örneğin, bir kaynak sağlayıcı tüm kaynaklarınıza aynı anda yalnızca tek bir okuma-yazma erişim düzeyi verirse ve erişimi yönetmek için bir mekanizma sağlamazsa, bunun bir anlamı yoktur. Başka bir deyişle, OAuth yalnızca kimlik doğrulama değil, yetkilendirme işlevselliği sağlayan bir çerçevedir.

Uygulamada sosyal ağ modeline çok iyi uyuyor. Özellikle üçüncü taraf "eklentilerine" izin vermek isteyen sosyal ağlar için popülerdir. Bu, kaynaklara erişimin doğası gereği gerekli olduğu ve aynı zamanda doğası gereği güvenilir olmadığı bir alandır (yani, bu uygulamalar üzerinde çok az kalite kontrolünüz vardır veya hiç yoktur).

Vahşi doğada bu kadar çok kullanım görmedim. Ben her ne kadar ben, otomatik olarak banka kayıtları erişecek bir online finansal danışmanlık firması bilmiyorum demek olabilir teknik olarak yol olduğunu kullanılabilir.


6
Anlamanızı kolaylaştırdınız. İlk satırı bunun gibi bir şeye değiştirmiş olabilirim. "OAuth, bir kaynak sağlayıcıya (ör. Gmail) kaynak sahibinin (örn. Bir gmail kullanıcısı) üçüncü taraflara (örn. LinkedIn hesabınız) bilgilere (ör. Kişi listeniz) erişim izni verdiğini bildirmeye izin verir." Yazdığınız şey Sağlayıcı ve üçüncü tarafın 'her ikisi de' Facebook olmak kafa karıştırıcı. Biraz ilginç bir senaryo getirmesine rağmen, yani Oauth şirket içinde farklı projeler arasında dahili olarak da kullanılabilir. Sağ? Bu yüzden karmaşık bir giriş mi yaptınız?
Bal

Anladığım kadarıyla, OAuth'un amacı, kimlik bilgileri paylaşmadan kaynak sahibi adına üçüncü taraf bir uygulamaya zaman sınırlı yetki vermektir. Uygulama sunucumda barındırılan API'ları mobil uygulamadan (üçüncü taraf dahil değildir) tüketmek için OAuth'a ihtiyacım olup olmadığını merak ediyorum.
Monish Kamble

Güvenilir bir taraf beni yetkilendirdiğinde, bunun aynı zamanda bir kimlik doğrulama mekanizması olduğu anlamına gelmez mi?
değişken

245

OAuth nedir?

OAuth, üçüncü taraf uygulamaların parolalarını göstermeden kullanıcı verilerine erişme yetkisini ele alan güvenli bir yetkilendirme protokolüdür. Örneğin. (Birçok web sitesinde fb, gPlus, twitter ile giriş yapın ..) hepsi bu protokol altında çalışır.

Taraflar

İlgili tarafları tanıdığınızda Protokol kolaylaşır. Temel olarak ilgili üç taraf vardır: oAuth Sağlayıcısı, oAuth İstemcisi ve Sahibi.

  • oAuth İstemcisi (Kimlik bilgilerinize erişmek isteyen Uygulama)
  • oAuth Sağlayıcısı (ör. facebook, twitter ...)
  • Sahibi (facebook olan kişi, twitter .. hesabı)

Nasıl çalışır?

Ben bir web sitesi (stackoverflow) facebook özelliği ile giriş eklemek için gereken bir senaryo var. Böylece facebook oAuth Sağlayıcısı ve stackoverflow oAuth İstemcisi.

  1. Bu adım uygulamanın geliştiricisi tarafından yapılır . Başlangıçta facebook'un (oAuth Sağlayıcısı) yığın akışı (oAuth Client) hakkında hiçbir fikri yoktur çünkü aralarında bağlantı yoktur. Bu nedenle ilk adım stackoverflow'u facebook geliştiricileri sitesine kaydetmektir . Bu, geliştiricilerin uygulamanın adını, web sitesi, logosu, yönlendirme URL'si (önemli olan) gibi uygulamanın facebook'a vermesi gerektiği durumlarda manuel olarak yapılır. Sonra stackoverflow başarıyla kaydedilir, istemci kimliği, istemci gizli vb facebook var ve OAUTH ile çalışıyor ve çalışıyor . resim açıklamasını buraya girin

    2. Şimdi stackoverflow kullanıcısı fb düğmesi ile giriş tıkladığında . Stackoverflow, ClientId (fb istemciyi tanımak için kullanır) ve redirectUrl (fb, başarılı olduktan sonra bu url'ye geri döner) ile facebook ister.Bu nedenle kullanıcı facebook giriş sayfasına yönlendirilir. Bu kullanıcı (sahip) facebook yığın yığını için kimlik bilgisi vermiyor en iyi parçasıdır .

resim açıklamasını buraya girin

resim açıklamasını buraya girin

  1. Sahip sonra Stackoverflow bilgilere erişmek için izin verin . Ardından Facebook, 2. adımda sağlanan redirectUrl'yi kullanarak authcode ile birlikte stackoverflow'a geri yönlendirir.
  2. Daha sonra Stackoverflow, her şeyin yolunda olduğundan emin olmak için elde edilen kimlik koduyla birlikte facebook ile iletişim kurar .
  3. Ancak o zaman facebook stackoverflow'a erişim belirteci verecektir . Sonra erişim belirteci , stackoverflow tarafından parola kullanılmadan sahibinin bilgilerini geri almak için kullanılır. Bu, acutal credentails'nin asla üçüncü taraf uygulamalarına maruz kalmadığı oAuth'un tüm nedenidir.

Daha fazlası için:

Hızlı video

Web bağlantısı


localhost'un da bir url olduğundan emin olun ve neden süreyi doldurmuyorsunuz ve sonucu burada yayınlamıyorsunuz.
Balman Rawat

2
evet IP Adresini yönlendirme URL'si olarak kullanabilirsiniz: redirect_uri = ' 127.0.0.1:4200 ' ve OAuth Alan Adı 127.0.0.1
Samson Maben

Ancak e-postanın çalışması için hem oAuth istemcisinde hem de oAuth sağlayıcısında aynı mı olmalı?
Rowayda Khayri

güzel açıklama
JayD

OAuth 2 bir Yetkilendirme protokolü değil, bir Güvenlik protokolüdür. Cevap yanlış notta başlıyor.
Rajat

13

Basitçe söylemek gerekirse, OAuth, uygulamalarınızın kullanıcı giriş bilgilerinizi doğrudan bir web sitesine götürmeden bilgilerinize kimlik bilgileri kazanmasının bir yoludur. Örneğin, kendi web sitenize bir uygulama yazarsanız ve bir kullanıcının facebook hesabındaki verileri kullanmasını istiyorsanız, geri arama URL'si aracılığıyla bir jeton almak için OAuth'u kullanabilir ve ardından bu jetonu kullanarak facebook API'sına telefon etmek için jetonun süresi dolana kadar veri kullanın. Web siteleri buna güvenir, çünkü kullanıcı doğrudan bilgilerini açıklamak ve kimlik bilgilerini çevrimiçi yaymak zorunda kalmadan programcıların verilerine erişmesine izin verir, ancak yine de verilere bir düzeyde koruma sağlar. Fiili yetkilendirme yöntemi olacak mı? Belki de son zamanlarda Twitter, Facebook,


14
OAuth bir kimlik doğrulama işlemi değil, bir yetkilendirme işlemidir.
André Caron

Uygulamanın doğrudan kimlik doğrulamasına ihtiyaç duyduğunu ima etmiyorum, ancak kullanıcı servis sağlayıcısı ile kimlik doğrulaması için bazı üçüncü taraflara kimlik doğrulaması gerektiğini düşünüyorum ...
ameer

Duyarlılığı ekledim, çünkü OpenID özellikle insanların kimlik bilgilerini paylaşmayı durdurmaları umuduyla temsilci kimlik doğrulamasını (mevcut bir harici hesabı yeniden kullanma) hedefliyor. OAuth özellikle bilgi alışverişini kolaylaştırma umuduyla yetkilendirmeyi (kaynakları yeniden kullanma) amaçlamaktadır.
André Caron

9

Oauth kesinlikle ivme kazanıyor ve kurumsal API'ler arasında da popüler hale geliyor. Uygulama ve veri odaklı dünyada İşletmeler Google, Facebook, twitter doğrultusunda API'leri dış dünyaya giderek daha fazla maruz bırakıyor. Bu gelişme ile 3 yollu bir kimlik doğrulama üçgeni oluşuyor

1) API sağlayıcısı - Varlıklarını API ile gösteren herhangi bir işletme, örneğin Amazon, Hedef vb. 2) Geliştirici - Bu API'lar üzerinde mobil / diğer uygulamalar oluşturan kişi 3) Son kullanıcı - Hizmetin sağladığı son kullanıcı - kayıtlı / misafir Amazon kullanıcılarını söyleme

Şimdi bu güvenlikle ilgili bir durum geliştiriyor - (Bu karmaşıklıkların birkaçını listeliyorum) 1) Son kullanıcı olarak geliştiricinin sizin adınıza API'lara erişmesine izin vermek istiyorsunuz. 2) API sağlayıcısı geliştiricinin ve son kullanıcının kimliğini doğrulamalıdır 3) Son kullanıcı vermiş olduğu onay için izinleri verebilmeli ve iptal edebilmelidir 4) Geliştiricinin API sağlayıcısına olan güven düzeyi değişebilir. kendisine verilen izinlerin düzeyi farklı

Oauth, yukarıda bahsedilen sorunu standart bir şekilde çözmeye çalışan bir yetkilendirme çerçevesidir. API'lerin ve Uygulamaların öne çıkmasıyla bu sorun giderek daha alakalı hale gelecek ve onu çözmeye çalışan herhangi bir standart - ister oat ister başka bir olsun - bir API sağlayıcısı / geliştiricisi ve hatta son kullanıcı olarak ilgilenilecek bir şey olacak!


9

OAuth ( O pen Auth orization), erişim verme / tahliye protokolü için açık bir standarttır. İnternet kullanıcılarının web sitelerine veya uygulamalarına şifrelerini vermeden diğer web sitelerindeki bilgilere erişim izni vermesinin bir yolu olarak kullanıldı. Kimlik doğrulama ile ilgilenmez .

Veya

OAuth 2.0 , kullanıcının kimlik bilgilerini göstermeden kaynaklarına bir siteye, başka bir siteye sınırlı erişim vermesine izin veren bir protokoldür.

  • Analoji 1: Bugün birçok lüks otomobil bir vale anahtarıyla geliyor. Otopark görevlisine verdiğiniz özel bir anahtardır ve normal anahtarınızın aksine, arabanın bir veya iki milden fazla sürmesine izin vermez. Bazı vale anahtarları bagajı açmazken, diğerleri yerleşik cep telefonu adres defterinize erişimi engeller. Vale anahtarının hangi kısıtlamaları uyguladığına bakılmaksızın, fikir çok zekidir. Her şeyin kilidini açmak için normal anahtarınızı kullanırken birine özel bir anahtarla aracınıza sınırlı erişim sağlarsınız. auth0 konumundan src

  • Analoji 2: Bir banka hesabı için bir başvuru formu doldurmak istediğimizi varsayalım. Burada Oauth, formu başvuru sahibi tarafından doldurmak yerine, Adhaar veya pasaport kullanarak formu doldurabileceği için çalışır.

    Burada aşağıdaki üç varlık yer almaktadır:

    1. Başvuru Sahibi yani Sahibi
    2. Banka Hesabı OAuth İstemcisi, bilgiye ihtiyaçları var
    3. Adhaar / Pasaport Kimliği OAuth Sağlayıcısıdır

7

OAuth tamamen Yetkilendirme yetkisi vermekle ilgilidir (sizin için Yetkilendirme yapabilen birini seçmek). Kimlik Doğrulama ve Yetkilendirmenin farklı şeyler olduğunu unutmayın. OAuth Yetkilendirmedir (Erişim kontrolü) ve Kimlik Doğrulama (Kimlik doğrulama) da uygulamak istiyorsanız, OAuth'un üstünde OpenID protokolü kullanılabilir.

Facebook, Google, Github gibi tüm büyük şirketler günümüzde bu tür bir kimlik doğrulama / yetkilendirme kullanmaktadır. Örneğin, Google hesabımı kullanarak bu web sitesinde yeni oturum açtım, yani Stackoverflow şifremi bilmiyor, şifremin (açıkça hashed) kaydedildiği Google'dan izin alıyor. Bu bir çok fayda sağlar, bunlardan biri; Yakın gelecekte her web sitesinde birkaç hesap yapmak zorunda kalmayacaksınız. Bir web sitesi (en çok güvendiğiniz) diğer tüm web sitelerine giriş yapmak için kullanılabilir. Yani sadece bir şifreyi hatırlamanız gerekecek.


2

OAuth Facebook / Google düğmesiyle SO hesabına kaydolduğumuzda oldu.

  1. Kullanıcıyı sağlayıcının yetkilendirme URL'sine yönlendiren uygulama (SO). (Kullanıcıya, uygulamaya verilerini okumak ve güncellemek için erişim izni vermek isteyip istemediğini soran bir web sayfası görüntüleme).
  2. Kullanıcı başvuru sürecini vermeyi kabul eder.
  3. Servis sağlayıcı kullanıcıyı yetkilendirme kodunu parametre olarak geçirerek uygulamaya (SO) geri yönlendirir.
  4. SO kodu erişim izni için değiştirir.

Kaynak: OAuth1 servis sağlayıcıları


Merhaba, ben REST API ile çalışmak gerekiyor, bu yüzden oAuth yükleyin, aslında Magento kullanıyorum, localhost, ben oAuth yükledim, canlı sunucuda nasıl yükleyebilirim, GoDaddy VPS sunucusu kullanıyorum, herhangi bir yardım? @john joe
Gem

@Rathinam merhaba, yardım etmek istiyorum, ama bu benim uzmanlığımın dışında. Çok üzgünüm.
John Joe

OAuth olmadan REST API kullanmalı mıyım? John Joe
Gem

@Rathinam evet, bu size bağlı
John Joe

1

OAuth, İnternet kullanıcılarının genellikle şifrelerini açmadan Microsoft, Google, Facebook veya Twitter hesaplarını kullanarak üçüncü taraf web sitelerine giriş yapmasının bir yolu olarak kullanılan açık bir yetkilendirme standardıdır.


2
Sanırım OAuth ve OpenID
A23149577

0

OAuth, Kaynak Sahibinden (facebook, google, tweeter, microsoft live vb.) Gerekli bilgileri sağlamak veya üçüncü taraf sisteme (örneğin siteniz) yazma başarısı için izin vermek için kullanılan bir protokoldür. Büyük olasılıkla OAuth protokolü olmadan bu sistemler arasında uygun olmayan bir iletişim şekli olacak üçüncü bölüm sistemleri için kimlik bilgileri mevcut olmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.