अधिकांश इंटरेक्टिव इंटरनेट एप्लिकेशन के लिए उपयोगकर्ता को एप्लिकेशन का उपयोग करने के लिए पहले "पंजीकृत" होने की आवश्यकता होती है और फिर उपयोगकर्ता को हर बार एप्लिकेशन का उपयोग करने के लिए "लॉग ऑन" करने की आवश्यकता होती है। पहले किसी उपयोगकर्ता का नामांकन करने और फिर बाद में उस उपयोगकर्ता को उन्हें एक्सेस करने की अनुमति देने की इस प्रक्रिया को उपयोगकर्ता प्रमाणीकरण के रूप में वर्णित किया जा सकता है। यह लेख हमारे लेखक उपयोगकर्ता प्रमाणीकरण प्रणाली के पंजीकरण घटक में प्रयुक्त कोड और प्रक्रियाओं पर केंद्रित है।
हमारा डेमो लॉगऑन पोर्टल उपयोगकर्ताओं को स्टोरीबुक नामक वेब कॉमिक बुक बिल्डर एप्लिकेशन तक पहुंचने की अनुमति देता है, लेकिन पोर्टल को कई स्थितियों में नियोजित किया जा सकता है जहां वेब एप्लिकेशन का उपयोग करने के लिए प्रमाणीकरण की आवश्यकता होती है।
हम यहां जिस कोड आधार का वर्णन कर रहे हैं, वह https://github.com/Bob-Wright/Authur-User-Registration-System पर एक सार्वजनिक भंडार के रूप में GitHub पर उपलब्ध है। टिप्पणियों, आलोचनाओं और सुझावों का हमेशा स्वागत है!
बिल्डर एप्लिकेशन को कॉमिक पुस्तकों की एक गैलरी से लॉन्च किया गया है जो कि बिल्डर द्वारा ही बनाई गई थी, और एप्लिकेशन का पहला पेज लॉगऑन पोर्टल लैंडिंग पेज है जो इन अगले दो स्क्रीनशॉट में यहां दिखाया गया है। यह पेज पोर्टल.php द्वारा स्टोरीबुक फोल्डर में प्रस्तुत किया गया है।
हमारे मुख्य डायलॉग बॉक्स में चार लॉगऑन विकल्प विकल्प सूचीबद्ध हैं, साथ ही एक बुनियादी स्पष्टीकरण पॉप-अप मोडल जो " लॉगिन विकल्प समझाया " बटन के माध्यम से उपलब्ध लॉगऑन विकल्पों में से प्रत्येक का वर्णन करता है।
लॉगऑन डायलॉग बॉक्स में " पासवर्ड बदलें " का एक विकल्प भी शामिल है, जो यहां शामिल है क्योंकि उपयोगकर्ता द्वारा अपना पासवर्ड बदलने के लिए अक्सर कारण यह होता है कि वे लॉगऑन कर सकते हैं।
संवाद में अंतिम आइटम एक उपयोगकर्ता के रूप में साइन अप करने के लिए साइन अप बटन आमंत्रण है।
इस साइन अप बटन को चुनने से साइनअप प्रोग्राम लॉन्च होगा और हमें निम्नलिखित तीन स्क्रीनशॉट में डायलॉग के साथ प्रस्तुत किया जाएगा। यह संवाद उपयोगकर्ता डेटा जानकारी का अनुरोध करता है जिसका उपयोग उपयोगकर्ता प्रोफ़ाइल डेटाबेस प्रविष्टि बनाने के लिए किया जाएगा
उपयोगकर्ता नाम और ईमेल पते की जानकारी प्राप्त करने के अलावा संवाद पासवर्ड प्रविष्टि के लिए पूछता है, और परंपरा को ध्यान में रखते हुए हम कम से कम एक प्रतीक चरित्र के साथ ऊपरी और निचले मामले में अल्फान्यूमेरिक वर्णों के संयोजन के लिए कहते हैं। इन वर्ण मापदंडों की आवश्यकता का इरादा स्पष्ट रूप से पासवर्ड को अनुमान लगाने में कठिन बनाना है। यह कितना अच्छा काम करता है यह मूट है।
उपयोगकर्ता नाम, ईमेल और पासवर्ड प्रविष्टियों के अलावा संवाद प्रत्येक उपयोगकर्ता के बारे में कुछ डेटा आइटम भी एकत्र करता है। इन मदों में नाममात्र रूप से व्यक्तिगत रूप से पहचान योग्य डेटा नहीं होता है, बल्कि इसके बजाय बाइनरी (हां / नहीं) कारकों की एक छोटी सूची प्रदान करने के लिए तैयार किया जाता है जिसे हम बाद में सत्यापन प्रक्रिया में उपयोग कर सकते हैं। इसलिए उदाहरण के लिए हम किसी विशेष उपयोगकर्ता से पूछ सकते हैं "क्या आप तैर सकते हैं?" उन्हें पहचानने में एक कारक के रूप में।
ये डेटा आइटम प्रदान किए जाने के बाद हम स्क्रीन के नीचे " साइन अप " बटन पर क्लिक करके आगे बढ़ सकते हैं। इसके परिणामस्वरूप निम्न स्क्रीन डिस्प्ले होगा जो हमें सूचित करता है कि उपयोगकर्ता को एक पुष्टिकरण ईमेल भेज दिया गया है।
इसके बाद यहां दिखाया गया ईमेल सत्यापन के लिए नए उपयोगकर्ता के ईमेल पते पर भेजा जाता है।
पिछली सभी साइन अप गतिविधि एक उपयोगकर्ता को एक पूर्ण कार्यात्मक ईमेल/पासवर्ड टोकन-एक्सचेंज लॉगऑन सिस्टम में प्रभावी ढंग से पंजीकृत करती है जो हमारे प्रारंभिक पोर्टल संवाद में दिखाए गए पहले तीन लॉगऑन विधियों (उपयोगकर्ता नाम/पासवर्ड, मैजिक लिंक, और वन टाइम पासवर्ड) का समर्थन करती है।
लेकिन यहां से कोड और अधिक दिलचस्प हो जाता है क्योंकि हम अपने उपयोगकर्ता के पंजीकरण के लिए एक छवि आधारित एमएफए लॉगऑन टोकन बनाना जारी रखते हैं। ईमेल में "मेरे ईमेल सत्यापित करें" बटन पर क्लिक करने के परिणामस्वरूप नीचे दिखाई गई यह अगली ब्राउज़र स्क्रीन गेटकीपर .php प्रोग्राम द्वारा खोली जाएगी जो स्टोरीबुक/पोर्टल फ़ोल्डर में रहता है। गेटकीपर प्रोग्राम वेब पेज पहले उपयोगकर्ता को सूचित करता है कि उनका ईमेल सफलतापूर्वक सत्यापित हो गया है और उपयोगकर्ता से छवियों की गैलरी से "द्वारपाल" अवतार छवि चुनने का अनुरोध करके जारी है।
GitHub पर कोड रिपॉजिटरी में शामिल एक उपयोगिता डेवलपर प्रोग्राम है जिसका नाम dumpSessionZ.php (या dumpSession.php अगर आप रेपो में शामिल Zebra session2DB सत्र डेटाबेस मैनेजर का उपयोग नहीं करते हैं) जो PHP $_SESSION के आवधिक प्रदर्शन की अनुमति देगा। कार्यक्रम के निष्पादन के रूप में चर। ये अगली छवियां GateKeeper.php प्रोग्राम पेज के विरुद्ध चलने वाले डंपसेशन के परिणाम हैं, जैसा कि हम इसे ऊपर देखते हैं, और यह निष्पादित PHP प्रोग्राम की गतिविधि को प्रोफाइल करता है, जिससे हमें "साथ चलने" की अनुमति मिलती है।
गेटकीपर के कार्य के प्राथमिक पहलू में छवि फ़ाइलों की कई सरणियों में हेरफेर करना शामिल है जिसका उपयोग हम तब ऑनस्क्रीन चयन गैलरी को पॉप्युलेट करने के लिए करते हैं। इन साजिशों का उद्देश्य प्रत्येक पृष्ठ लोड पर गैलरी छवियों के प्रदर्शन क्रम को बेतरतीब ढंग से पुनर्व्यवस्थित करना है। यदि आप GateKeeper.php कोड को देखते हैं तो आप देखेंगे कि हमने कोड के शीर्ष भाग में एक अपवाद ट्रैप डाला है जो प्रदर्शित करने के लिए छवियों का चयन करता है ताकि हम गैलरी में किसी विशेष उपयोगकर्ता छवि को शामिल करने को निर्दिष्ट कर सकें। यह हमें यह सुनिश्चित करने की अनुमति देता है कि इस छवि को ट्रैप अपवाद उपयोगकर्ता के द्वारपाल अवतार के रूप में चुना जा सकता है। इसके दो दुष्परिणाम हैं।
सबसे पहले, यह मुझे विशेष रूप से डेमो वॉकथ्रू में अपना निजी मगशॉट शामिल करने की अनुमति देता है। दूसरे हालांकि, यह एक शिम डालने के लिए एक सुविधाजनक स्थान प्रदान करता है जिसका उपयोग किसी विशेष छवि को किसी निर्दिष्ट उपयोगकर्ता को उपलब्ध कराने के लिए किया जा सकता है।
हालाँकि, जारी रखें और मान लें कि हमारे उपयोगकर्ता ने ऊपर गेटकीपर स्क्रीन में चयनित अवतार छवि पर क्लिक किया है। इसका परिणाम अगले यहां दिखाए गए पहले मगशॉट जानकारी पृष्ठ के प्रदर्शन में होता है। इस पृष्ठ की छवि एक JPEG छवि है जिसे Storybook/Portal/mugshotChoice.php प्रोग्राम द्वारा Storybook/Portal/ckimages फ़ोल्डर से लोड किया गया है।
इसके परिणामस्वरूप PHP $_SESSION डेटा सरणी में कुछ और मान भी जुड़ जाते हैं जिन्हें हम अपने डंपसेशन डिस्प्ले को रीफ़्रेश करके जांच सकते हैं। विशेष नोट में उपयोगकर्ता डेटाबेस से जानकारी है जिसमें उपयोगकर्ता ईमेल पता और प्रथम और अंतिम नाम के साथ-साथ यहां दिखाए गए कारक मान शामिल हैं।
यदि हम अपने उपयोगकर्ता पंजीकरण को जारी रखने के लिए गेटकीपर छवि पर क्लिक करते हैं, तो यह क्रिया हमारे नोड पीजीपी एपीआई सर्वर को मगशॉट चॉइस .php द्वारा जारी किए जा रहे POST अनुरोध के रूप में परिणत होती है। नोड टर्मिनल इस निम्न स्क्रीन को प्रदर्शित करेगा क्योंकि यह इस उपयोगकर्ता के लिए एक पीजीपी कुंजी जोड़ी बनाता है और सहेजता है और फिर अगले एपीआई अनुरोध की प्रतीक्षा करता है।
जब एपीआई कुंजी पीढ़ी को पूरा करता है तो यह डेटाबेस में चाबियों को सहेजता है और पीजीपी एपीआई पूर्णता नोटिस ईमेल के माध्यम से उपयोगकर्ता को मुख्य ऐप पर वापस लौटाता है आगे दिखाया गया वेब पेज डिस्प्ले जिसमें Storybook/Portal/showMugshotChoice.php लोड करने की दिशा शामिल है। स्थापित नोड एपीआई सेवा के लिए कोड इस आलेख रेपो में ऑथर/ओपनपीजीपी फ़ोल्डर में शामिल है और इस आलेख में एपीआई कोड के बारे में अधिक जानकारी है ( https://medium.com/@itzbobwright/some-openpgp- क्रिप्टो-फ़ंक्शंस-ऑन-ए-नोड-एपीआई-सर्वर ) और इसके संबद्ध गिटहब रेपो।
यह सेटअप एक एपीआई के उपयोग की अनुमति देता है जो लॉगऑन एप्लिकेशन से अलग डोमेन पर है, और यह ओपनपीजीपीजेएस नोडजेएस रिपोजिटरी के उपयोग की अनुमति देता है जिसे आप https://github.com/Bob पर इस गिटहब रेपो पर एक कांटा के रूप में पा सकते हैं। -राइट/ओपनपीजीपीजेएस ।
आइए इस अलगाव के कुछ पहलुओं पर विचार करें जिनका हम लाभ उठा सकते हैं। हम अपने पीजीपी नोड सर्वर एपीआई को अपने लॉगऑन पोर्टल के समान सर्वर पर चला सकते हैं। एक अन्य विचार पीकेसी नोड सर्वर को एक निजी आईपी या इसी तरह की अलगाव योजना पर लॉगऑन ऐप सर्वर से जोड़ना होगा। इंटरनेट डीएनएस सिस्टम के विपरीत कोई भी सर्वर आईपी एड्रेस का उपयोग कर सकता है।
लेकिन वर्तमान योजना की चर्चा जारी रखने के लिए, उपयोगकर्ता चित्र पर क्लिक करेगा, जिसके परिणामस्वरूप निम्न पृष्ठ प्रदर्शन के साथ showMugshotChoice.php लोड करने के निर्देश दिए गए हैं।
यदि हम इस पृष्ठ पर डंपसेशन रिफ्रेश करते हैं तो हम नीचे दिखाए गए अनुसार PHP $_SESSION सरणी चर में संलग्न चार और डेटा मान देख सकते हैं। सरणी में अब एक PGP शैली की सार्वजनिक कुंजी के लिए एक मान शामिल है जो [कवरइमेज] , [stegoImge] , और [secretKey] कुंजियों के लिए तीन अन्य मानों के साथ [plaintext] के $_SESSION सरणी कुंजी मान के साथ संग्रहीत है। [सादा पाठ] मान, यानी पीजीपी सार्वजनिक कुंजी ब्लॉक , एक प्रमुख डेटाबेस से पुनर्प्राप्त किया जाता है जहां इसे पहले हमारे नोड पीजीपी एपीआई द्वारा लिखा गया था।
ShowMugshotChoice.php प्रोग्राम ने उपरोक्त स्क्रीन में दिखाई गई छवि को उत्पन्न करने के लिए इन मानों का उपयोग किया है और यह छवि वास्तव में अब एक नई सहेजी गई PNG प्रारूप छवि है जिसे PGP सार्वजनिक कुंजी ब्लॉक मान को क्रिप्टोग्राफ़िक रूप से एम्बेड करने के लिए स्टेग्नोग्राफ़िक रूप से एन्कोड किया गया है।
इस समय हमने अपने ऑथर-एन-इमेज-बेस्ड-एमएफए-यूजर-ऑथेंटिकेशन-सिस्टम में उपयोग की जाने वाली सभी सूचनाओं को बनाने और सहेजने के लिए अपने लॉगऑन पोर्टल के पंजीकरण या नामांकन हिस्से का उपयोग किया है । यदि हमारा उपयोगकर्ता अब निर्देशित के रूप में छवि पर क्लिक करता है तो वे एक नए साफ़ किए गए $_SESSION सरणी के साथ एक नए लॉगिन पोर्टल पृष्ठ पर वापस आ जाते हैं जैसा कि नीचे दो स्क्रीन पर दिखाया गया है और वे स्टोरीबुक कॉमिक बुक बिल्डर में अपने लॉगिन के साथ आगे बढ़ सकते हैं।
इससे पहले कि हम अपनी दूसरी मगशॉट जानकारी छवि पर क्लिक करें और जब तक हमारी $_SESSION सरणी अभी भी भरी हुई है, हम डेमो सेटअप में शामिल किसी अन्य प्रोग्राम का उपयोग करने के लिए अपना ध्यान हटा सकते हैं। यदि हम Storybook/Portal/decodeStego.php पृष्ठ पर ब्राउज़ करते हैं तो हमें नीचे यह स्क्रीन प्रस्तुत की जाएगी जो इस उपयोगकर्ता के लिए स्टेग्नोग्राफ़िक रूप से एम्बेडेड और क्रिप्टो एन्कोडेड सार्वजनिक कुंजी ब्लॉक की अवधारणा निष्कर्षण का प्रमाण दिखाती है।
एक रैप अप के रूप में ये अगली छवियां उपरोक्त पृष्ठ के लिए पूर्ण डंपसेशन कैप्चर हैं।
यह हमारे लेखक छवि आधारित एमएफए उपयोगकर्ता प्रमाणीकरण प्रणाली के नामांकन या साइन अप घटक में प्रयुक्त कोड की हमारी परीक्षा को पूरा करता है। हमारे कोड का अगला और अंतिम खंड, जिस पर हम विचार करेंगे, वह है लॉगिन घटक फ़ंक्शन जिसमें हम अपने नए पंजीकृत उपयोगकर्ता को हमारे होस्ट किए गए स्टोरीबुक एप्लिकेशन तक पहुंचने के लिए सत्यापित करते हैं। उम्मीद है कि जल्द ही आने वाले राइटअप के लिए बने रहें।
हमारे उपयोगकर्ता प्रमाणीकरण प्रणाली के अगले पुनरावृत्ति के लिए इरादा दो सुविधाओं को जोड़ने का है। पहली सुविधा हमारे एमएफए टोकन छवि के रूप में उपयोग करने के लिए हमारी जेनरेट की गई स्टेग्नोग्राफ़िक छवि को टकसाल या एनएफटी छवि बनाने के लिए प्रोग्रामेटिक रूप से उपयोग करने के लिए एक विधि शामिल करना होगा। यहां एक महत्वपूर्ण विचार लागत है और डेमो के लिए खनन के लिए कोई गैस शुल्क नहीं होना चाहिए। दूसरी सुविधा एक उपयोगकर्ता को अपने स्वयं के गेटकीपर अवतार छवि को अपलोड करने की अनुमति देगी जैसा कि एक कर्मचारी डेटाबेस द्वारा प्रदान किया गया है जिसे हम अपने स्टेग्नोग्राफिक एनएफटी प्रारूप में परिवर्तित कर सकते हैं।
मुझे उन सभी परोपकारी कोडर्स को कुछ अच्छी तरह से योग्य चिल्लाहट और PROPS की पेशकश करने दें, जिनके काम ने इस प्रयास में योगदान दिया है। अंत में सबसे उत्कृष्ट समर्थन के लिए भगवान और मेरे परिवार को धन्यवाद !!