दोनों विकल्प पहचानकर्ता को JWT पर हस्ताक्षर करने के लिए किस एल्गोरिथ्म का उपयोग करते हैं । हस्ताक्षर एक क्रिप्टोग्राफ़िक ऑपरेशन है जो एक "हस्ताक्षर" (JWT का हिस्सा) उत्पन्न करता है कि टोकन प्राप्त करने वाला यह सुनिश्चित करने के लिए मान्य कर सकता है कि टोकन के साथ छेड़छाड़ नहीं की गई है।
RS256 ( SHA-256 के साथ RSA हस्ताक्षर ) एक असममित एल्गोरिथ्म है , और यह एक सार्वजनिक / निजी कुंजी जोड़ी का उपयोग करता है: पहचान प्रदाता के पास हस्ताक्षर बनाने के लिए उपयोग की जाने वाली एक निजी (गुप्त) कुंजी होती है, और JWT के उपभोक्ता को एक सार्वजनिक कुंजी मिलती है हस्ताक्षर को मान्य करने के लिए। चूंकि सार्वजनिक कुंजी, निजी कुंजी के विपरीत, को सुरक्षित रखने की आवश्यकता नहीं है, अधिकांश पहचान प्रदाता उपभोक्ताओं को इसे प्राप्त करने और उपयोग करने के लिए आसानी से उपलब्ध कराते हैं (आमतौर पर मेटाडेटा URL के माध्यम से)।
दूसरी ओर, HS256 ( SHA-256 के साथ HMAC ), हैशिंग फ़ंक्शन का एक संयोजन और एक (गुप्त) कुंजी शामिल है, जो कि हैश उत्पन्न करने के लिए उपयोग की जाने वाली दो पार्टियों के बीच साझा की जाती है जो हस्ताक्षर के रूप में काम करेगी। चूंकि हस्ताक्षर बनाने के लिए और इसे मान्य करने के लिए एक ही कुंजी का उपयोग किया जाता है, इसलिए यह सुनिश्चित करने के लिए ध्यान रखा जाना चाहिए कि कुंजी समझौता नहीं किया गया है।
यदि आप JWTs का उपभोग करने वाले एप्लिकेशन को विकसित कर रहे हैं, तो आप सुरक्षित रूप से HS256 का उपयोग कर सकते हैं, क्योंकि आपके पास गुप्त कुंजियों का उपयोग करने वाले पर नियंत्रण होगा। यदि, दूसरी ओर, आपके पास ग्राहक पर नियंत्रण नहीं है, या आपके पास गुप्त कुंजी हासिल करने का कोई तरीका नहीं है, तो RS256 एक बेहतर फिट होगा, क्योंकि उपभोक्ता को केवल सार्वजनिक (साझा) कुंजी जानने की आवश्यकता होती है।
चूंकि सार्वजनिक कुंजी आमतौर पर मेटाडेटा समापन बिंदु से उपलब्ध कराई जाती है, इसलिए क्लाइंट को सार्वजनिक कुंजी को स्वचालित रूप से प्राप्त करने के लिए प्रोग्राम किया जा सकता है। यदि यह मामला है (जैसा कि यह .Net कोर पुस्तकालयों के साथ है), तो आपके पास कॉन्फ़िगरेशन पर काम करने के लिए कम काम होगा (पुस्तकालय सर्वर से सार्वजनिक कुंजी प्राप्त करेंगे)। दूसरी ओर, सिमेट्रिक कुंजी को बैंड (एक सुरक्षित संचार चैनल सुनिश्चित करना) से बाहर एक्सचेंज करने की आवश्यकता होती है, और अगर कोई हस्ताक्षर करने वाला कुंजी रोलओवर होता है तो मैन्युअल रूप से अपडेट किया जाता है।
Auth0 OIDC, SAML और WS-Fed प्रोटोकॉल के लिए मेटाडेटा समापन बिंदु प्रदान करता है, जहां सार्वजनिक कुंजियों को पुनर्प्राप्त किया जा सकता है। आप एक ग्राहक की "उन्नत सेटिंग्स" के तहत उन समापन बिंदुओं को देख सकते हैं।
OIDC मेटाडेटा समापन बिंदु, उदाहरण के लिए, का रूप लेता है https://{account domain}/.well-known/openid-configuration
। यदि आप उस URL पर ब्राउज़ करते हैं, तो आपको एक JSON ऑब्जेक्ट दिखाई देगा https://{account domain}/.well-known/jwks.json
, जिसमें अकाउंट की सार्वजनिक कुंजी (या कुंजियाँ) हैं।
यदि आप RS256 नमूनों को देखते हैं, तो आप देखेंगे कि आपको सार्वजनिक कुंजी को कहीं भी कॉन्फ़िगर करने की आवश्यकता नहीं है: यह फ्रेमवर्क द्वारा स्वचालित रूप से पुनर्प्राप्त किया जाता है।