बेस URL वह URL है जिस पर अनुरोध भेजा जाता है, लेकिन इसमें कोई भी क्वेरी स्ट्रिंग या हैश पैरामीटर शामिल नहीं होते। यहाँ सही प्रोटोकॉल का उपयोग करना महत्वपूर्ण है, इसलिए सुनिश्चित करें कि URL का “https://” भाग API को भेजे गए वास्तविक अनुरोध से मेल खाता हो।
इसके बाद, अनुरोध में शामिल सभी पैरामीटर एकत्र करें। इन अतिरिक्त पैरामीटरों के लिए दो स्थान होते हैं — URL (query string के हिस्से के रूप में) और अनुरोध बॉडी। नमूना अनुरोध में दोनों स्थानों में एक-एक पैरामीटर शामिल है:
इन मानों को encode करके एक single string में बदलना होगा, जिसका उपयोग बाद में किया जाएगा। यह string बनाने की प्रक्रिया बहुत विशिष्ट है:
- जिन key और value पर signature किया जाएगा, उनमें से हर एक को Percent encode करें।
- encoded key [1] के आधार पर पैरामीटर की सूची को वर्णानुक्रम में sort करें [2]।
- हर key/value pair के लिए:
- output string में encoded key जोड़ें।
- output string में ‘=’ वर्ण जोड़ें।
- output string में encoded value जोड़ें।
- अगर और key/value pair बाकी हैं, तो output string में ‘&’ वर्ण जोड़ें।
अब तक एकत्र किए गए इन तीन मानों को जोड़कर एक एकल स्ट्रिंग बनानी होती है, जिससे सिग्नेचर जनरेट किया जाएगा। OAuth विनिर्देशन में इसे सिग्नेचर बेस स्ट्रिंग कहा जाता है।
HTTP method, base URL, और parameter string को एक ही स्ट्रिंग में एन्कोड करने के लिए:
- HTTP Method को अपरकेस में बदलें और आउटपुट स्ट्रिंग को इसी मान के बराबर सेट करें।
- आउटपुट स्ट्रिंग में ‘&’ वर्ण जोड़ें।
- URL को Percent encode करें और उसे आउटपुट स्ट्रिंग में जोड़ें।
- आउटपुट स्ट्रिंग में ‘&’ वर्ण जोड़ें।
- parameter string को Percent encode करें और उसे आउटपुट स्ट्रिंग में जोड़ें।
जो मान उस खाते की पहचान करता है, जिसकी ओर से आपका ऐप काम कर रहा है, उसे OAuth token secret कहा जाता है। यह मान कई तरीकों से प्राप्त किया जा सकता है, जिनका वर्णन access token प्राप्त करना में किया गया है।
एक बार फिर, इन मानों को केवल अपने ऐप तक ही सीमित और निजी रखना बहुत महत्वपूर्ण है। अगर आपको लगता है कि आपके मान compromise हो गए हैं, तो अपने token फिर से generate करें (इस पृष्ठ पर दिए गए token वास्तविक अनुरोधों के लिए अमान्य चिह्नित किए गए हैं)।
इन दोनों मानों को मिलाकर एक साइनिंग कुंजी बनाई जाती है, जिसका उपयोग signature generate करने के लिए किया जाएगा। साइनिंग कुंजी बस percent encoded token secret होती है:
ध्यान दें कि कुछ flow, जैसे request token प्राप्त करते समय, ऐसे होते हैं जिनमें token secret अभी ज्ञात नहीं होता। इस स्थिति में, साइनिंग कुंजी में percent encoded consumer secret के बाद ampersand वर्ण ‘&’ होना चाहिए।
अंत में, सिग्नेचर की गणना सिग्नेचर बेस स्ट्रिंग और साइनिंग कुंजी को HMAC-SHA1 hashing algorithm में देकर की जाती है। एल्गोरिदम का विवरण hash_hmac फ़ंक्शन के रूप में समझाया गया है।
HMAC signing function का आउटपुट एक binary string होता है। सिग्नेचर स्ट्रिंग बनाने के लिए इसे base64 में encode करना आवश्यक है। उदाहरण के लिए, इस पृष्ठ पर दिए गए base string और साइनिंग कुंजी के लिए आउटपुट 2E CF 77 84 98 99 6D 0D DA 90 5D C7 17 7C 75 07 3F 3F CD 4E है। इस मान को base64 में बदलने पर, यह इस अनुरोध के लिए OAuth सिग्नेचर बनता है: