Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

PHP में Auth0 का उपयोग कर Authentication और Authorization

by
Difficulty:IntermediateLength:LongLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

इस लेख में, हम Auth0 सर्विस का पता लगाने जा रहे हैं, जो एक सर्विस के रूप में Authentication और Authorization प्रदान करता है। Auth0 आपकी आंख झपकने में अपने ऐप्स के लिए बेसिक Authentication और Authorization फीचर्स सेट करने की अनुमति देता है।

Auth0 क्या है?

Auth0 एक सर्विस टूल के रूप में ऑथेंटिकेशन है जो आपकी साइट में ऑथेंटिकेशन से संबंधित फीचर्स को इम्प्लीमेंट करता है। यदि आपने कोई ऐप बनाया है और आप Authentication और Authorization फीचर्स को आउटसोर्स करना चाहते हैं, तो Auth0 जैसी किसी सर्विस पर आपको ध्यान देना चाहिए।

मुझे जल्दी से सारांश बताने दें कि Auth0 क्या पेशकश करता है:

  • सिंगल sign-on
  • मल्टीफैक्टर ऑथेंटिकेशन
  • पासवर्ड के बिना लॉगिन
  • यूजर मैनेजमेंट
  • और भी बहुत कुछ

इस article में, हम Auth0 सर्विस द्वारा प्रदान की गई ऑथेंटिकेशन फीचर्स का लाभ उठाने के लिए आपके वेब ऐप्स में कुछ सिंगल sign-on मेथड्स के माध्यम से जा सकते हैं।

आर्टिकल के पहले भाग में, हम पता लगाएंगे कि सर्वर-साइड PHP वेब ऐप में बेसिक ऑथेंटिकेशन फंक्शनलिटी कैसे सेट अप करें। दूसरे हाफ में, मैं समझाऊंगा कि आप Auth0 सर्विस का उपयोग करके OAuth ऑथेंटिकेशन सेट अप करके अपने कस्टम API कैसे सुरक्षित कर सकते हैं।

सर्वर-साइड ऑथेंटिकेशन इंटीग्रेशन

इस सेक्शन में, हम Auth0 का उपयोग कर सर्वर-साइड वेब ऐप्स के लिए त्वरित ऑथेंटिकेशन कैसे सेट कर सकते हैं, इस बारे में जानेंगे। असल में, Auth0 टीम पहले से ही एक आसान GitHub सैंपल प्रदान करती है जो बेसिक उदाहरणों को प्रदर्शित करता है, इसलिए हम इसे पुनर्निर्मित करने के बजाय इसका उपयोग करेंगे।

आगे बढ़ने से पहले, Composer इंस्टॉल करना सुनिश्चित करें क्योंकि इसका उपयोग composer.json फ़ाइल का उपयोग करके वास्तविक Auth0 SDK को इनस्टॉल करने के लिए किया जाएगा। साथ ही, यदि आप इस आर्टिकल के उदाहरणों का पालन करना चाहते हैं, तो आगे बढ़ें और स्वयं को Auth0 के साथ एक निःशुल्क अकाउंट बनाएं।

प्रोजेक्ट सेट अप करें

चलो आगे बढ़ें और सैंपल प्रोजेक्ट के क्लोन को लें।

डेपेंडेन्सीज़ इनस्टॉल करने के लिए composer install कमांड चलाएं।

composer.json फ़ाइल के अनुसार, इसे vlucas/phpdotenv और auth0/auth0-php पैकेज को इनस्टॉल करना चाहिए था।

vlucas/phpdotenv लाइब्रेरी का प्रयोग .env फ़ाइल से एनवायरनमेंट वेरिएबल प्रारंभ करने के लिए किया जाता है। इस प्रकार, यह आपको कोड से कॉन्फ़िगरेशन को अलग करने की अनुमति देता है जो एनवायरनमेंट के बीच बदलता है।

दूसरी तरफ, auth0/auth0-php पैकेज वह है जो हमारे एप्लीकेशन में authorization सेटअप करने में हमारी सहायता करेगा।

इसके बाद, आइए .env फ़ाइल में हमारे एप्लिकेशन के लिए कॉन्फ़िगरेशन सेट अप करें। आगे बढ़ें और .env फ़ाइल को .env.example फ़ाइल से कॉपी करके बनाएँ।

इसमें कॉन्फ़िगरेशन वैल्यू शामिल हैं जिनका उपयोग Auth0 लाइब्रेरी द्वारा किया जाएगा।

आपको Auth0 डैशबोर्ड पर Applications > Default App > Settings के तहत अधिकांश सेटिंग्स को ढूंढने में सक्षम होना चाहिए। कृपया ध्यान दें कि मैं सिस्टम द्वारा बनाए गए डिफ़ॉल्ट एप्लिकेशन का उपयोग कर रहा हूं। बेशक, यदि आप ऐसा करना चाहते हैं तो आप आगे बढ़ सकते हैं और एक नया एप्लीकेशन बना सकते हैं।

AUTH0_CALLBACK_URL आपके एप्लिकेशन का URL है जहां Auth0 लॉगिन और लॉगआउट के बाद यूज़र्स को रीडायरेक्ट करेगा। इस फ़ील्ड में आपके द्वारा सेट की गयी वैल्यू Auth0 डैशबोर्ड पर एप्लिकेशन सेटिंग्स के तहत Allowed Callback URLs के तहत कॉन्फ़िगर किया जाना चाहिए।

आपको ऑथेंटिकेशन लॉजिक के अधिकांश इम्प्लीमेंटिंग में तीन मुख्य फाइलें मिलेंगी।

  • index.php: यह मुख्य पेज है जो यूजर की स्थिति के आधार पर लॉगिन या लॉगआउट बटन प्रदर्शित करता है।
  • login.php: जब आप लॉगिन बटन पर क्लिक करते हैं, तो यह स्क्रिप्ट शुरू की जाएगी, और यह यूज़र्स को लॉगिन के लिए Auth0 लॉगिन इंटरफ़ेस पर रीडायरेक्ट करेगा। पोस्ट लॉगिन, उन्हें वापस AUTH0_CALLBACK_URL पर रीडायरेक्ट कर दिया जाएगा।
  • logout.php: जब आप लॉगआउट बटन पर क्लिक करते हैं, तो यह स्क्रिप्ट शुरू की जाएगी, और यह यूज़र्स को बैकग्राउंड में Auth0 पर रीडायरेक्ट करेगा, उन्हें लॉग आउट करें, और उन्हें वापस AUTH0_CALLBACK_URL पर ले जाएगा।

मुख्य प्रोजेक्ट फाइलें

आइए स्टार्टर प्रोजेक्ट में प्रत्येक फ़ाइल को जल्दी से चलाएं।

लॉगिन स्क्रिप्ट

हम login.php फ़ाइल से शुरू करेंगे।

शुरुआत में, हमने ऑटोलोडर शामिल किए हैं जो Auth0 और एनवायरनमेंट वेरिएबल संबंधित क्लासेज को लोड करने के लिए ज़िम्मेदार हैं। उसके बाद, हम getenv फ़ंक्शन का उपयोग कर .env फ़ाइल से कॉन्फ़िगरेशन वेरिएबल प्रारंभ करते हैं।

इसके बाद, हम Auth0 ऑब्जेक्ट को तुरंत चालू करते हैं और लॉगिन मेथड को कॉल करते हैं जो यूज़र्स को लॉगिन के लिए Auth0 पर रीडायरेक्ट करता है। लॉगिन पर, यूज़र्स को हमारी साइट पर वापस रीडायरेक्ट कर दिया जाएगा।

आप Facebook, Google और इसी जैसे अपने सोशल एकाउंट्स का उपयोग करके लॉग इन कर सकते हैं, या लॉगिन के दौरान एक नया अकाउंट बना सकते हैं। किसी भी मामले में, Auth0 नए यूज़र्स के लिए अपने अंत में रिकॉर्ड बनाएगा। आप Connections > Social के तहत Auth0 डैशबोर्ड पर विभिन्न सोशल लॉग इन इनेबल कर सकते हैं। साथ ही, आप Users लिंक के तहत Auth0 डैशबोर्ड पर Auth0 का उपयोग करके लॉग इन किए गए यूज़र्स की सूची देख सकते हैं।

लॉगआउट स्क्रिप्ट

इसके बाद, चलो logout.php फ़ाइल पर एक त्वरित नज़र डालें।

यह login.php फ़ाइल के समान ही काम करता है, सिवाय इसके कि जब यूजर लॉग आउट करते हैं तो इसे कॉल किया जाएगा। logout मेथड को आपके ऐप में यूजर सेशन की अवधि समाप्त करने के लिए बुलाया जाता है। उसके बाद, यूजर को Auth0 पर रीडायरेक्ट किया जाएगा ताकि यूजर को यूजर की लॉगआउट गतिविधि के बारे में सूचित किया जा सके। अंत में, यूजर को आपके एप्लीकेशन पर वापस भेज दिया जाएगा।

इंडेक्स फ़ाइल

अंत में, index.php फ़ाइल के माध्यम से चलो, जो हमारे एप्लीकेशन का प्रवेश बिंदु है।

यहां, हमने $auth0 ऑब्जेक्ट की getUser मेथड का उपयोग यह देखने के लिए किया है कि कोई एक्टिव session है या नहीं। यदि कोई एक्टिव session नहीं है, तो हम Sign In लिंक प्रदर्शित करेंगे, जो यूजर को login.php पर ले जाता है और लॉगिन फ्लो को शुरू करता है। दूसरी तरफ, हम यूजर को बधाई देंगे और Logout लिंक प्रदर्शित करेंगे यदि यूजर पहले ही लॉग इन है।

तो यह सर्वर-साइड ऐप्स के लिए बेसिक ऑथेंटिकेशन फ्लो का इम्प्लीमेंटेशन था।

OAuth2 के साथ अपने कस्टम API सुरक्षित करें

इस सेक्शन में, हम देखेंगे कि आप OAuth2 authorization कोड ग्रांट फ्लो को लागू करके अपने कस्टम API कैसे सुरक्षित कर सकते हैं। मुझे उम्मीद है कि आप authorization कोड ग्रांट के स्टैण्डर्ड फ्लो से परिचित हैं क्योंकि हम इसके विवरण में नहीं जाएंगे। यदि आप OAuth2 के साथ गति प्राप्त करना चाहते हैं तो Envato Tuts+ पर हमारी कुछ अन्य पोस्ट यहां देखें।

इसके बजाय, हम सीधे वास्तविक इम्प्लीमेंटेशन में गोता लगा देंगे। आगे बढ़ें और निम्नलिखित कंटेंट के साथ auth_code_grant_example.php फ़ाइल बनाएं।

आइए देखें कि यह कोड कैसे काम करता है!

Authorization प्रवाह शुरू करना

सबसे पहले, हमने एक लिंक तैयार किया जो यूजर को authorization फ्लो शुरू करने के लिए Auth0 सर्वर पर भेजता है।

कृपया अपने एप्लीकेशन के अनुरूप वैल्यूज के साथ {AUDIENCE}, {CLIENT_ID}, और {CALLBACK_URL} को रेप्लस करें। {AUDIENCE} पैरामीटर को Auth0 डैशबोर्ड पर APIs > {YOUR API APPICATION} > Settings के तहत प्राप्त Identifier फ़ील्ड की वैल्यू के साथ रेप्लस किया जाना चाहिए।

{SOME_RANDOM_STRING} को एक यूनिक वैल्यू के साथ रेप्लस किया जाना चाहिए जो अनुमान लगाना मुश्किल है। CSRF हमलों को रोकने के लिए इस स्ट्रिंग का उपयोग किया जाता है। साथ ही, {AUTH0_DOMAIN} को अपने डोमेन नाम से रेप्लस करना सुनिश्चित करें, जैसा कि हमने पहले चर्चा की थी।

एक्सेस टोकन प्राप्त करना

जब कोई यूजर Sign In लिंक पर क्लिक करता है, तो उन्हें ऑथेंटिकेशन के लिए Auth0 सर्वर पर ले जाया जाएगा। ऑथेंटिकेशन के बाद, उन्हें आपकी प्रोफ़ाइल पर एप्लिकेशन एक्सेस को अधिकृत करने के लिए कहा जाएगा। पोस्ट ऑथेंटिकेशन, यूजर को $_GET पैरामीटर के रूप में code के साथ आपके एप्लिकेशन पर रीडायरेक्ट कर दिया जाएगा।

इसके बाद, हम एक्सेस टोकन प्राप्त करने के लिए इस code का आदान-प्रदान कर सकते हैं।

जैसा कि आप देख सकते हैं, एक्सेस टोकन लाने के लिए एक सिंगल CURL कॉल लेता है।

अपने कस्टम API एंडपॉइंट पर कॉल करें

एक बार आपके पास पहुंच टोकन हो जाने के बाद, आप हेडर में इसे शामिल करके अपने कस्टम API एंडपॉइंट को कॉल कर सकते हैं।

एक Auth0-संरक्षित API एंडपॉइंट

नकली API रिसोर्स फ़ाइल demo_api_server.php ऐसा कुछ दिख सकता है:

आइए जल्दी से इस कोड के महत्वपूर्ण हिस्सों से गुज़रें।

एक्सेस टोकन को वैलिडेट करना

सुरक्षित रिसोर्स तक एक्सेस प्रदान करने से पहले इनकमिंग एक्सेस टोकन को वैलिडेट करना आपकी ज़िम्मेदारी है। और यह वही है जो हमने निम्नलिखित स्निपेट में किया है। हमने एक्सेस टोकन को वैलिडेट करने के लिए JWTVerifier यूटिलिटी क्लास का उपयोग किया है।

{SIGNING_ALGORITHM} को APIs > {YOUR API APPLICATION} > Settings के अंतर्गत पाए गए Signing Algorithm फ़ील्ड की वैल्यू के साथ रेप्लस किया जाना चाहिए।

तो, इस तरह आप अपने कस्टम API की रक्षा कर सकते हैं, क्या आप Auth0 सर्विस में OAuth2 फ्लो का उपयोग करना चाहते हैं।

निष्कर्ष

आज, हम Auth0 सर्विस के माध्यम से गए, जो एक सर्विस के रूप में Authentication और Authorization प्रदान करता है। Auth0 सर्विस शुरू करने के बाद, हम यह देखने के लिए कुछ व्यावहारिक उदाहरणों से गुजरे कि आप इसे अपने PHP ऍप्लिकेशन्स के साथ कैसे इंटेग्रटे कर सकते हैं।

कृपया नीचे दिए गए फ़ीड का उपयोग करके अपने सुझाव और प्रश्न पोस्ट करने के लिए स्वतंत्र महसूस करें!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.