2015-10-21 18 views
80

के लिए सर्वश्रेष्ठ HTTP प्रमाणीकरण शीर्षलेख प्रकार मैं सोच रहा हूं कि HTTP शीर्षलेख प्रकार JWT tokens के लिए सबसे अच्छा उचित क्या है।जेडब्ल्यूटी

शायद सबसे लोकप्रिय प्रकार में से एक Basic है। उदाहरण के लिए:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

यह दो पैरामीटर जैसे लॉगिन और पासवर्ड को संभालता है। तो यह जेडब्ल्यूटी टोकन के लिए प्रासंगिक नहीं है।

इसके अलावा, मैं के बारे में बियरर प्रकार सुना है, उदाहरण के लिए:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 

हालांकि, मैं इसका अर्थ पता नहीं है। क्या यह भालू से संबंधित है?

क्या HTTP Authorization हेडर में जेडब्ल्यूटी टोकन का उपयोग करने का कोई विशेष तरीका है? हम Bearer का उपयोग करना चाहिए, या हम को सरल बनाने और बस चाहिए का उपयोग करें:

Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 

धन्यवाद।

संपादित करें:

या हो सकता है, बस एक JWT HTTP हेडर:

JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ 
+17

यह उल्लसित है :) – Gunhan

+2

मुझे विश्वास है कि भालू के बारे में छोटी टिप्पणी जानबूझकर थी, लेकिन यह मुझे हंसी बना दिया – Rodrigo

+1

@ रोड्रिगो भालू के बारे में हिस्सा चूक गया, लेकिन टिप्पणी देखी और फिर देखा। मुझे एक अच्छा हंसी दी। –

उत्तर

-18

जेडब्ल्यूटी टोकन ओएथ के बिना उपयोग किया जा सकता है।

इस प्रकार, एक साधारण "Authorization: JWT <your_token>" अधिक उपयुक्त होगा।

उदाहरण:

curl -H "Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" https://api.domain.tld/me/account 
+1

विशेष रूप से 'बेयरर' के बजाय 'जेडब्ल्यूटी' का उपयोग करने से आप प्राधिकरण शीर्षलेख को पार्स करके, अपने बैकएंड का समर्थन कर सकते हैं, जो विभिन्न लेख तंत्र के बीच अंतर करने की अनुमति देता है। – wzr1337

+46

जेडब्ल्यूटी साइट स्वयं ही 'बेयरर' स्कीमा का उपयोग करने के लिए कहती है, इसका पालन करना बेहतर है। – Pascal

+4

lol @ स्वीकृत उत्तर होने के साथ -14। – Yatrix

149

अपने ग्राहक पहुंच टोकन (जेडब्ल्यूटी या किसी अन्य टोकन) भेजने के लिए के लिए सबसे अच्छा HTTP हेडर Authorization है Bearer प्रमाणीकरण योजना के साथ शीर्षलेख।

इस योजना का वर्णन RFC6750 द्वारा किया गया है।

उदाहरण:

GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer eyJhbGciOiJIUzI1NiIXVCJ9...TJVA95OrM7E20RMHrHDcEfxjoYZgeFONFh7HgQ

आप मजबूत सुरक्षा संरक्षण की जरूरत है, तो आप भी निम्न IETF ड्राफ़्ट विचार कर सकते हैं: https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture। यह मसौदा (छोड़ दिया गया?) https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac का एक अच्छा विकल्प प्रतीत होता है।

ध्यान दें कि भले ही यह आरएफसी और उपरोक्त विनिर्देश OAuth2 फ्रेमवर्क प्रोटोकॉल से संबंधित हैं, तो इनका उपयोग किसी अन्य संदर्भ में किया जा सकता है जिसके लिए क्लाइंट और सर्वर के बीच टोकन एक्सचेंज की आवश्यकता होती है।

कस्टम JWT योजना के विपरीत आप अपने प्रश्न, the Bearer one is registered at the IANA में उल्लेख करते हैं। उस संदर्भ में तो लागू नहीं (RFC7616 और RFC7617 देखें)

Basic और Digest प्रमाणीकरण स्कीम के संबंध में, वे एक उपयोगकर्ता नाम और एक गुप्त का उपयोग कर प्रमाणीकरण करने के लिए समर्पित कर रहे हैं।

+1

धन्यवाद! इस 'बेयरर' कीवर्ड की उत्पत्ति को देखना अच्छा लगा। लेकिन यह ओथ से आता है। हालांकि जेडब्ल्यूटी का उपयोग ओएथ के बिना किया जा सकता है। यह OAuth चश्मा के साथ पूरी तरह से स्वतंत्र है। –

+1

हां यह OAuth2 ढांचे प्रोटोकोल से आता है, लेकिन किसी अन्य संदर्भ में इसका उपयोग किया जा सकता है। आपका सर्वर अन्य शीर्षकों या तरीकों (उदाहरण के लिए शरीर अनुरोध में या क्वेरी स्ट्रिंग में) का उपयोग करके जेडब्ल्यूटी को स्वीकार करने के लिए स्वतंत्र है, लेकिन 'प्रमाणीकरण' शीर्षलेख अधिक उचित है और [RFC7235] (https: //tools.ietf) के अनुरूप है। संगठन/एचटीएमएल/आरएफसी 7235) जो HTTP 1.1 संदर्भ –

+0

में प्रमाणीकरण ढांचे का वर्णन करता है, मैं ज़ाग ज़ैग से सहमत हूं, "जेडब्ल्यूटी" जैसी कस्टम योजना इस तरह ओएथ 2 बेयरर योजना को सह करने से कहीं अधिक उपयुक्त है। – l8nite

8

यह भालू के लिए संबंधित है?

एरर ... नहीं!

यहाँ RFC 6750 के अनुसार बियरर टोकन की परिभाषा है:

1.2. Terminology

बियरर टोकन

संपत्ति के साथ एक सुरक्षा टोकन कि टोकन के कब्जे में किसी भी पार्टी (एक "भालू") टोकन का किसी भी तरीके से उपयोग कर सकता है कि किसी अन्य पार्टी के कब्जे में हो सकता है। एक भालू टोकन का उपयोग करने के लिए क्रिप्टोग्राफिक कुंजी सामग्री (साक्ष्य के कब्जे) के कब्जे को साबित करने के लिए एक भालू की आवश्यकता नहीं होती है।

Bearer योजना मूल रूप से OAuth 2.0 प्राधिकरण ढांचे के लिए RFC 6750 में परिभाषित किया गया है, लेकिन कुछ भी अनुप्रयोग जो OAuth 2.0 का उपयोग नहीं करते में पहुँच टोकन Bearer योजना का उपयोग करने से रोकता है।

जितना हो सके मानकों पर चिपके रहें और अपनी खुद की प्रमाणीकरण योजनाएं न बनाएं।


पहुंच टोकन Bearer प्रमाणीकरण योजना का उपयोग कर Authorization अनुरोध हेडर में भेजा जाना चाहिए:

2.1. Authorization Request Header Field

जब Authorization अनुरोध हेडर क्षेत्र द्वारा HTTP/परिभाषित में पहुँच टोकन भेजने 1.1, क्लाइंट एक्सेस टोकन को प्रेषित करने के लिए Bearer प्रमाणीकरण योजना का उपयोग करता है।

उदाहरण के लिए: Bearer HTTP प्राधिकरण योजना के साथ Authorization अनुरोध हेडर क्षेत्र का उपयोग कर एक वाहक टोकन के माध्यम से

GET /resource HTTP/1.1 
Host: server.example.com 
Authorization: Bearer mF_9.B5f-4.1JqM 

[...]

ग्राहक प्रमाणीकृत करना चाहिए अनुरोध। [...]

अवैध या टोकन गुम होने की स्थिति में Bearer योजना WWW-Authenticate प्रतिक्रिया हेडर में शामिल किया जाना चाहिए:

3. The WWW-Authenticate Response Header Field

संरक्षित संसाधन अनुरोध शामिल नहीं है प्रमाणीकरण प्रमाण-पत्र या इसमें कोई एक्सेस टोकन नहीं है जो संरक्षित संसाधन तक पहुंच को सक्षम बनाता है, संसाधन सर्वर में HTTP WWW-Authenticate प्रतिक्रिया शीर्षलेख फ़ील्ड शामिल होना चाहिए [...]।

इस विनिर्देशन द्वारा परिभाषित सभी चुनौतियों को एथ-स्कीम वैल्यू Bearer का उपयोग करना चाहिए। इस योजना के बाद एक या अधिक औथ-पैरा मानों का पालन किया जाना चाहिए। [...]।

उदाहरण के लिए

, प्रमाणीकरण के बिना एक संरक्षित संसाधन अनुरोध के जवाब में:

HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Bearer realm="example" 

और तिथि निकल चुकी पहुँच टोकन का उपयोग कर एक प्रमाणीकरण प्रयास के साथ एक संरक्षित संसाधन अनुरोध के जवाब में:

HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Bearer realm="example", 
         error="invalid_token", 
         error_description="The access token expired" 
संबंधित मुद्दे