Belirteç tabanlı kimlik doğrulaması nedir?


Yanıtlar:


543

Bence burada iyi açıklanmış - sadece uzun makalenin anahtar cümlelerinden alıntı:

Belirteç tabanlı bir kimlik doğrulama sisteminin arkasındaki genel kavram basittir. Kullanıcıların, kullanıcı adlarını ve şifrelerini kullanmadan belirli bir kaynağı getirmelerini sağlayan bir simge elde etmek için kullanıcı adlarını ve şifrelerini girmelerine izin verin. Jetonları alındıktan sonra, kullanıcı uzak siteye belirli bir süre belirli bir kaynağa erişim sağlayan jetonu sunabilir.

Başka bir deyişle: kimlik doğrulama için bir seviye dolaylama ekleyin - her korumalı kaynak için kullanıcı adı ve parola ile kimlik doğrulaması yapmak yerine, kullanıcı bu şekilde bir kez kimlik doğrulaması yapar (sınırlı süreli bir oturumda), karşılığında zaman sınırlı bir simge alır ve bu belirteci oturum sırasında daha fazla kimlik doğrulaması için kullanır.

Avantajları çoktur - onlar sınırlı zaman ve kaynak olarak sınırlı bir güven tutardır bazı diğer otomatik sisteme üzerine, bunu aldıktan sonra daha örn kullanıcı, belirteç geçebileceği, ancak olurdu değil istekli kullanıcı adlarına ve şifrelerine güvenmek (örneğin, erişmelerine izin verilen her kaynak için, çoğunlukla veya en azından şifrelerini değiştirene kadar).

Hala net olmayan bir şey varsa, sizin için% 100 net olmayan ne olduğunu açıklığa kavuşturmak için lütfen sorunuzu düzenleyin ve eminim size daha fazla yardımcı olabiliriz.


6
Bir web uygulamasında, uzak web sitesinden bir (veya daha fazla) çerezin jetonun işlevini yerine getirdiğini düşünerek doğru muyum?
AJP

29
Jetonlar çerez olarak depolandığından, bir kişinin bu çerez / jetonu çalmasını ve kullanmasını durduracak, sunucuyu yetkili kullanıcı olduğunu düşünmesi için kandıracak bir şey var mı? Açıkçası bunu sadece x kez kullanabilirler, ancak bu süre boyunca ihtiyaç duydukları tüm hasarı yapabilirlerdi.
BenM

40
Bu, kullanıcının kullanıcı adını ve şifresini girerek bir oturum_kimliği alabilen ve daha sonraki istekte bu oturum_kimliğini kullanabildiği SessionAuthentication'dan farkı nedir?
Saurabh Verma

4
jetonun süresi dolarsa, kullanıcının yeni bir jeton almak için tekrar giriş yapması gerekir mi?
Anthony To

12
@SaurabhVerma bir oturumdan farklıdır, çünkü bilgileri bir çerezde saklamanız gerekmez. Bu, bazıları çerez kullanımı konusunda kısıtlamaları olan mobil cihazlar için harika.
Kebman

182

Gönderen Auth0.com

Belirteç Tabanlı Kimlik Doğrulama, her istekte sunucuya gönderilen imzalı bir belirteci kullanır.

Jeton tabanlı bir yaklaşım kullanmanın faydaları nelerdir?

  • Web alanları arası / CORS: çerezler + CORS farklı alanlarda iyi oynamaz. Belirteç tabanlı bir yaklaşım, kullanıcı bilgilerini iletmek için bir HTTP üstbilgisi kullandığınız için herhangi bir etki alanında herhangi bir sunucuya AJAX aramaları yapmanızı sağlar.

  • Vatansız (sunucu tarafı ölçeklenebilirliği olarak da bilinir): bir oturum deposu tutmaya gerek yoktur, jeton tüm kullanıcı bilgilerini ileten bağımsız bir varlıktır. Devletin geri kalanı, müşteri tarafında çerezlerde veya yerel depolarda yaşıyor.

  • CDN: uygulamanızın tüm varlıklarını bir CDN'den (ör. Javascript, HTML, resimler vb.) Sunabilirsiniz ve sunucu tarafınız yalnızca API'dır.

  • Ayrıştırma: belirli bir kimlik doğrulama şemasına bağlı değilsiniz. Jeton herhangi bir yerde oluşturulabilir, bu nedenle API'nız bu çağrıları doğrulamanın tek bir yolu ile her yerden çağrılabilir.

  • Mobil kullanıma hazır: yerel bir platformda (iOS, Android, Windows 8 vb.) Çalışmaya başladığınızda, jeton tabanlı bir yaklaşım tüketirken çerezler ideal değildir.

  • CSRF: çerezlere güvenmediğiniz için siteler arası isteklere karşı koruma sağlamanız gerekmez (ör. Sitenizi sib etmek, POST isteği oluşturmak ve mevcut kimlik doğrulama çerezini yeniden kullanmak mümkün olmaz çünkü hiçbiri olmayacaktır) ).

  • Performans: Burada herhangi bir kesin performans ölçütü sunmuyoruz, ancak bir ağ gidiş dönüşünün (örneğin, veritabanında bir oturum bulma), bir jetonu doğrulamak ve içeriğini ayrıştırmak için bir HMACSHA256 hesaplamaktan daha fazla zaman alacaktır.


6
@Asik Jeton iptali, kara liste, yanıt saldırı önleme vb.
İle


2
"Oturumlar için JWT'yi
Juraj Martinka

1
Aşık, Jetonun geçerliliği ve ne zaman sona ereceği hakkında? Bu bilgileri eklerseniz iyi olur.
Arun Prakash

2
Bağlantı kesildi.
Eliptik görünüm

95

A token, yalnızca oluşturmuş Server Xolabilecek ve belirli bir kullanıcıyı tanımlamak için yeterli veri içeren bir veri parçasıdır .

Sen giriş bilgilerinizi sunmak ve sorabiliriz Server Xbir için token; ve sonra kendinize ait olabilir tokenve Server Xkullanıcıya özgü bazı eylemler gerçekleştirmeyi isteyebilirsiniz .

TokenŞifreleme alanından çeşitli tekniklerin çeşitli kombinasyonları kullanılarak ve daha geniş güvenlik araştırma alanından girdi kullanılarak oluşturulur. Eğer kendi tokensisteminizi kurmaya karar verirseniz , gerçekten akıllı olmalısınız.


4
Genellikle, belirteç tabanlı kimlik doğrulaması istiyorsanız, OAuth ile başlamalısınız.
Bob Aman

6
OAuth kesinlikle Web tabanlı bir uygulamada uygulanabilir. Ancak, örneğin, işletim sistemi oturumları oturumları, diğer birçok yazılım programı gibi jeton sistemlerini de kullanır, bu nedenle bu fikir Web ile sınırlı değildir.
yfeldblum

1
Halka açık olmayan bir müşteri destek sistemi için de bir belirteç tercih edilebilir. Şirket kullanıcı adını / şifreyi kontrol eder ve jetonu düzenler ve kontrol eder.
KevinManx

chrs - ama bu sistem oturum tabanlı bir sistemden nasıl farklı?
BKSpurgeon

@BKSpurgeon - Jetonlar, kimliği doğrulanmış oturumları uygulamanın yaygın bir yoludur.
yfeldblum

40

Belirteç, sunucu tarafından oluşturulan bir veri parçasıdır ve belirli bir kullanıcıyı ve belirteç geçerliliğini tanımlamak için bilgiler içerir. Belirteç, kullanıcının bilgilerini ve doğrudan bir kullanıcı adı ve parola vermek yerine, kimlik doğrulamayı destekleyen her yöntemle kullanıcının sunucuya iletebileceği özel bir belirteç kodunu içerir.

Belirteç tabanlı kimlik doğrulama, sunucu tarafından sağlanan bir güvenlik belirteci kullanarak bir sunucuya, ağa veya başka bir güvenli sistemde oturum açmaya çalışan kullanıcıların kimliğini doğrulayan bir güvenlik tekniğidir.

Bir kullanıcı, sunucuya bir güvenlik belirteci ileterek geçerli bir kullanıcı olduğunu kanıtlayabilirse kimlik doğrulama başarılı olur. Hizmet güvenlik kodunu doğrular ve kullanıcı isteğini işler.

Jeton hizmet tarafından onaylandıktan sonra, istemci için güvenlik bağlamı oluşturmak için kullanılır, böylece hizmet art arda kullanıcı istekleri için yetkilendirme kararları verebilir veya etkinliği denetleyebilir.

kaynağı ziyaret et


22

Belirteç Tabanlı (Güvenlik / Kimlik Doğrulama)

yani eriştiğimizi kanıtlayabilmemiz için önce jetonu almamız gerekir. Gerçek bir yaşam senaryosunda, jeton binaya bir erişim kartı olabilir, evinizin kilidinin anahtarı olabilir. Ofisiniz için bir anahtar kartı veya evinizin anahtarını almanız için, önce kim olduğunuzu kanıtlamanız ve aslında bu jetona erişiminiz olduğunu kanıtlamanız gerekir. Birine kimliğinizi göstermek veya gizli bir şifre vermek kadar basit bir şey olabilir. Bu yüzden ofisime erişmem gerektiğini hayal edin. Güvenlik ofisine gidiyorum, onlara kimliğimi gösteriyorum ve bana bu jetonu veriyorlar, bu da binaya girmemi sağlıyor. Şimdi, jetonum yanımda olduğu sürece, bina içinde istediğim her şeyi yapmak için sınırsız erişimim var.

Jeton tabanlı güvenliğin faydası nedir?

Güvensiz API'yi tekrar düşünürsek, bu durumda yapmamız gereken, yapmak istediğimiz her şey için şifremizi vermemiz gerektiğiydi.

Hayal etmekofisimize her kapıdan girdiğimizde, kapının yanında oturan herkese şifremizi vermek zorundayız. Bu oldukça kötü olurdu, çünkü ofisimizdeki herhangi birinin şifremizi alıp bizi taklit edebileceği anlamına geliyor ve bu oldukça kötü. Bunun yerine, yaptığımız şey, jetonu elbette şifre ile birlikte almamızdır, ancak bunu bir kişiden alırız. Ve sonra bu simgeyi binanın içinde istediğimiz yerde kullanabiliriz. Tabii, jetonu kaybedersek, başka birisinin şifrenizi bildiği gibi aynı sorunumuz var, ancak bu, jetonu kaybedersek, erişimi ve belki jetonu iptal edebileceğimizden nasıl emin olabiliriz gibi şeylere yönlendirir. 24 saatten fazla yaşamamalıyız, bu yüzden ertesi gün ofise geldiğimizde kimliğimizi tekrar göstermeliyiz. Ama yine de, kimliği gösterdiğimiz sadece bir kişi var,


15

Soru eski ve teknoloji gelişti, işte şu anki durum:

JSON Web Token (JWT), web uygulama ortamındaki taraflar arasında hak taleplerini iletmek için JSON tabanlı bir açık standarttır (RFC 7519). Jetonlar kompakt, URL güvenli ve özellikle web tarayıcısı çoklu oturum açma (TOA) bağlamında kullanılabilir olacak şekilde tasarlanmıştır.

https://en.wikipedia.org/wiki/JSON_Web_Token


1
JWT'nin jeton tabanlı kimlik doğrulamasını uygulamak için teknolojinin mevcut durumunu temsil ettiğini düşünmüyorum. Uygulamanın sadece bir yoludur ve cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions
Sung Cho

3

Sadece hash veritabanında veya başka bir şekilde kullanıcı ile ilişkili hash. Bu simge, bir kullanıcının uygulamanın ilgili içeriğine erişimini doğrulamak ve daha sonra yetkilendirmek için kullanılabilir. Bu belirteci istemci tarafında almak için oturum açmak gerekir. İlk kez giriş yaptıktan sonra, geri alınan jetonu oturum, oturum kimliği gibi başka verileri kaydetmemeniz gerekir, çünkü burada her şey diğer uygulama kaynaklarına erişmek için jetondur.

Token, kullanıcının orijinalliğini sağlamak için kullanılır.


3

Günümüzde Web API kaynaklarını güven altına almak için en çok tercih edilen yaklaşım, Web API sunucusundaki kullanıcıların, her biri ile istemci tarafından sunucuya gönderilmesi gereken imzalı belirteci (belirli bir kullanıcıyı tanımlamak için yeterli bilgi içerir) kullanarak kimlik doğrulaması yapmaktır. her istek. Buna Token Tabanlı Kimlik Doğrulama yaklaşımı denir.

Belirteç Tabanlı Kimlik Doğrulama aşağıdaki gibi çalışır:

Kullanıcı adı ve şifreyi istemciye girer (istemci tarayıcı veya mobil cihazlar vb. Anlamına gelir).

İstemci daha sonra bu kimlik bilgilerini (ör. Kullanıcı adı ve şifre) Yetkilendirme Sunucusuna gönderir.

Ardından, Yetkilendirme Sunucusu istemci kimlik bilgilerini (yani kullanıcı adı ve parola) doğrular ve bir erişim belirteci oluşturur ve döndürür. Bu Erişim Simgesi bir kullanıcıyı tanımlamak için yeterli bilgi içerir ve ayrıca jeton son kullanma süresini de içerir.

İstemci uygulaması daha sonra, token sona erene kadar Kaynak Sunucu'dan kısıtlı kaynaklara erişmek için HTTP isteğinin Yetkilendirme başlığına Erişim Belirteci'ni ekler.

Aşağıdaki makale, WEB API'sında Belirteç Tabanlı Kimlik Doğrulamanın adım adım nasıl uygulanacağını gösterir.

https://dotnettutorials.net/lesson/token-based-authentication-web-api/


-2

Yeni bir web sitesine kaydolduğunuzda, genellikle hesabınızı etkinleştirmeniz için bir e-posta gönderilir. Bu e-posta genellikle tıklamak için bir bağlantı içerir. Bu bağlantının bir parçası, bir belirteç içerir, sunucu bu belirteci bilir ve hesabınızla ilişkilendirebilir. Jeton genellikle onunla ilişkili bir son kullanma tarihine sahiptir, bu nedenle bağlantıyı tıklayıp hesabınızı etkinleştirmek için yalnızca bir saatiniz olabilir. Müşterinin e-postaları kontrol etmek için hangi cihazı veya tarayıcıyı kullandığı bilinmediğinden, bunların hiçbiri çerezler veya oturum değişkenleriyle mümkün olmaz.


11
Tek seferlik jeton / bağlantı, jeton tabanlı kimlik doğrulamasından farklı bir kavramdır.
Emile Bergeron

Söylediklerinin adı da jeton. Ama soru bu değil
sajjad Yosefi
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.