Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Auth0 के साथ रूबी ऑन रेल्स में प्रमाणीकरण को सुव्यवस्थित करना:एक शुरुआती मार्गदर्शिका

<पी> प्रमाणीकरण के कस्टम-निर्मित से लेकर प्लग-एंड-प्ले रूपों तक, रूबी डेवलपर्स के पास इन दिनों चुनने के लिए बहुत कुछ है। फिर भी, जैसा कि आप जानते होंगे, अपना स्वयं का समाधान बनाना महंगा और खतरनाक हो सकता है। यदि डेविस अधिकांश टीमों के लिए वास्तविक मानक है, तो एक विकल्प अधिकांश के जीवन को सरल बना सकता है।

<पी> यह आलेख रूबी ऑन रेल्स एप्लिकेशन में Auth0 के सेटअप और उपयोग को कवर करेगा, जिसमें भूमिकाओं को संभालने से लेकर उपयोगकर्ताओं को प्रमाणित करने के लिए कई प्रदाताओं पर भरोसा करने तक, आपको ठीक से काम करने के लिए आवश्यक सभी चीजें शामिल होंगी।

आरंभ करना

<पी> आरंभ करने के लिए हमें यहां बताया गया है:

  • एक Auth0 खाता
  • रूबी ऑन रेल्स एप्लिकेशन (संस्करण 7.x से आगे)
<पी> Auth0 एक निःशुल्क स्तर वाली तृतीय-पक्ष प्रमाणीकरण सेवा है जो आपको 7,000 उपयोगकर्ताओं तक को संभालने की सुविधा देती है। यह आपको आरंभ करने के लिए काफी है, और यदि आपको अधिक उन्नत सुविधाओं की आवश्यकता है तो इसकी कीमत उचित है।

हमारे रूबी ऐप को Auth0 में कॉन्फ़िगर करना

<पी> चूंकि आपका एप्लिकेशन रीडायरेक्ट और कॉल के माध्यम से उपयोगकर्ताओं को प्रमाणित करने के लिए Auth0 पर निर्भर करेगा, इसलिए हमें यह सुनिश्चित करना होगा कि यह सुरक्षित रहे।

<पी> हमारे Auth0 खाते में, आइए एक किरायेदार के भीतर एक एप्लिकेशन बनाएं। आप अलग करने के लिए एक खाते में एकाधिक किरायेदार बना सकते हैं:

  • डोमेन नाम.
  • विभिन्न वातावरण (विकास, उत्पादन, आदि)।
  • वह देश या क्षेत्र जिसके भीतर डेटा संग्रहीत किया जाएगा।
<पी> एक बार जब आप अपना पहला किरायेदार बना लेते हैं, तो आप एक एप्लिकेशन बना सकते हैं। यहीं से हम शुरुआत करेंगे।

<पी> एप्लिकेशन पैनल में "सेटिंग्स" टैब पर जाएं। आपको निम्नलिखित को कॉपी और पेस्ट करके किसी सुरक्षित स्थान पर सहेजना होगा:

  • डोमेन नाम:app-name.[eu,us,..].auth0.com
  • ग्राहक की आईडी
  • ग्राहक का रहस्य
<पी> हमें निम्नलिखित एप्लिकेशन यूआरआई भी भरना होगा। हम अपने स्थानीय विकास सेटअप के लिए इन मूल्यों का उपयोग करेंगे:

  • अनुमत कॉलबैक यूआरएल:http://localhost:3000/auth/auth0/callback (प्रमाणीकरण के बाद URL Auth0 पर रीडायरेक्ट किया जाएगा)।
  • अनुमत लॉगआउट यूआरएल:http://localhost:3000 (किसी के लॉग आउट करने के बाद URL Auth0 पर रीडायरेक्ट किया जाएगा)।
<पी> आइए आगे बढ़ें और अपना ऐप कॉन्फ़िगर करें।

हमारा रूबी ऑन रेल्स एप्लिकेशन तैयार करना

<पी> आप rails new का उपयोग करके वेनिला रूबी ऑन रेल्स एप्लिकेशन से शुरुआत कर सकते हैं आदेश.

<पी> आइए एक ऐसा जनरेट करें जो डेटाबेस के लिए SQLite3 और CSS लाइब्रेरी के लिए टेलविंड पर निर्भर हो। मिनी-टेस्ट की स्थापना छोड़ें और एप्लिकेशन को "Auth0 आलेख" नाम दें:

 <पी> केवल कुछ विशेषताओं के साथ एक उपयोगकर्ता मॉडल बनाएं:

 <पी> यह हमारे एप्लिकेशन के लिए एक सरल लेकिन कुशल आधार बनाता है।

Auth0 Gem को ऐप में जोड़ना

<पी> आपको omniauth-auth0 की आवश्यकता होगी और omniauth-rails_csrf_protection अपने रूबी ऑन रेल्स एप्लिकेशन में Auth0 का उपयोग करने के लिए।

 

Auth0 को कॉन्फ़िगर करना

<पी> हमें एक छोटी कॉन्फ़िगरेशन फ़ाइल (config/auth0.yml) बनाने की आवश्यकता है ) हमारे विकास परिवेश में साख संग्रहीत करने के लिए।

 <पी> हम यहां कुछ erb का उपयोग करके पर्यावरण चर पर भी भरोसा कर सकते हैं:

 <पी> बेशक, रूबी ऑन रेल्स क्रेडेंशियल्स पर भरोसा करने से यह सुनिश्चित होता है कि चीजें अधिक अद्यतित रहें।

<पी> इस फ़ाइल का उपयोग Auth0 इनिशियलाइज़र (config/initializers/auth0.rb) में किया जाएगा ), जिसे अब हम बनाएंगे:

 <पी> जैसा कि आप यहां देख सकते हैं, हम Rails.application.config_for का उपयोग कर रहे हैं YAML फ़ाइल की सामग्री को सुविधाजनक हैश के रूप में लोड करने के लिए। हम इसे किसी भी गुप्त हैंडलिंग लाइब्रेरी से बदल सकते हैं, जिसमें रेल एन्क्रिप्टेड क्रेडेंशियल स्टोरेज भी शामिल है।

<पी> निम्नलिखित पर ध्यान दें:

  • प्रदाता का नाम (:auth0 )
  • YAML फ़ाइल के तीन आइटम, AUTH0_CONFIG के माध्यम से पढ़े और उपयोग किए गए हैश.
  • callback_path कुंजी और मान, Auth0 इंटरफ़ेस में हमारे द्वारा कॉन्फ़िगर किए गए मान से मेल खाते हैं।
  • authorize_params और scope इसके अंदर की कुंजी; हम उस पर बाद में वापस आएंगे।
<पी> प्रमाणीकरण की अनुमति देने के लिए हमें इंटरफ़ेस और रूटिंग तत्व बनाने की आवश्यकता है।

टेलविंड के साथ रूट और यूआई सेट करना

<पी> इस उदाहरण में, हम TailwindCSS के साथ फ्रेमवर्क के संस्करण 7.1 का उपयोग करके रूबी ऑन रेल्स एप्लिकेशन के साथ काम करेंगे।

<पी> निम्न आदेश का प्रयोग करें:

 <पी> फिर हम प्रमाणीकरण प्रक्रिया का परीक्षण करने की तैयारी करते हुए, इंडेक्स एक्शन के साथ दो नियंत्रक जोड़ सकते हैं:

 <पी> उन दो आदेशों के साथ, निम्नलिखित बनाए जाते हैं:

  • दोनों public_controller.rb और private_controller.rb नियंत्रक, सूचकांक क्रिया के साथ उपयोग के लिए तैयार
  • दोनों संबंधित मार्ग
  • संबंधित विचार
<पी> आइए कॉलबैक और विफलताओं को संभालने के लिए Auth0 नियंत्रक जोड़ें। नियंत्रक फ़ाइल बनाएं (bin/rails g controller auth0 ) और निम्नलिखित जोड़ें:

 <पी> फिर उन तीन क्रियाओं का उपयोग करने के लिए मार्गों को अपडेट करें:

 <पी> और फिर हम Login जोड़ सकते हैं और Logout क्रमशः सार्वजनिक और निजी दृश्य में बटन:

 <पी> अब आप 'http://localhost:3000' पर जा सकते हैं। Login का प्रयोग करें बटन और आपको निजी पर पुनः निर्देशित किया जाएगा पेज. वहां, आपको एक Logout मिलेगा बटन.

<पी> हालाँकि, कुछ चीज़ें गायब हैं:

  • उपयोगकर्ता की प्रोफ़ाइल से डेटा
  • उपयोगकर्ता की पहचान करना और प्राधिकरण को संभालना

स्कोप और डेटा के साथ काम करना

<पी> चलिए कुछ कदम पीछे चलते हैं और इनिशियलाइज़र (config/initializers/auth0.rb) को वापस लाते हैं ):

 <पी> यहां महत्वपूर्ण भाग का दायरा है:openid profile . यह Auth0 को बताता है कि हम जानकारी के कुछ टुकड़ों में रुचि रखते हैं, अर्थात्:

  • प्रदाता का नाम (Auth0)
  • uid :उपयोगकर्ता से मेल खाने वाला एक अद्वितीय पहचानकर्ता
  • एक info हैश:जिसमें एक नाम, प्रोफ़ाइल चित्र का यूआरएल और एक खाली 'ईमेल' कुंजी होती है
  • एक extra_info हैश:फिर से, एक नाम और प्रोफ़ाइल चित्र के साथ, लेकिन दिए गए और पारिवारिक नामों की एक जोड़ी
  • के साथ
<पी> Auth0 के दस्तावेज़ में दायरे के विषय पर और पढ़ें।

<पी> उपरोक्त जानकारी मूल्यवान है, और आपको यह सुनिश्चित करना चाहिए कि, कम से कम पहली बार लॉगिन करने पर, आप उस डेटा को अपने एप्लिकेशन में एक तालिका में कॉपी कर लें।

<पी> ऐसा करने के लिए, हमें auth0_controller में अनुरोध-प्रतिक्रिया की सामग्री का उपयोग करने की आवश्यकता है और, विशेष रूप से, callback में क्रिया:

 <पी> हैश में जाने और प्रयोग करने के लिए रीडायरेक्ट से पहले ब्रेकप्वाइंट का उपयोग करें।

<पी> हम आमतौर पर ईमेल पता भी चाहते हैं। इसे पाने के लिए, आप दायरा अपडेट कर सकते हैं:

 <पी> एप्लिकेशन सर्वर को पुनः लोड करने और लॉगिन चरणों से गुजरने के बाद, आपको एप्लिकेशन को अतिरिक्त जानकारी तक पहुंच प्रदान करने की आवश्यकता होगी।

<पी> अब हम callback में ऐसा कुछ कर सकते हैं क्रिया:

 <पी> इससे यह सुनिश्चित होगा कि हमारे पास उपयोगकर्ता के लिए एक स्थानीय, अद्यतित प्रोफ़ाइल है।

सत्रों पर एक शब्द

<पी> रूबी ऑन रेल्स एप्लिकेशन में एक सत्र एक विशेष हैश है। इसमें सीमित भंडारण है जो नियंत्रकों और दृश्यों से पहुंच योग्य है और प्रत्येक आगंतुक के लिए अद्वितीय है।

<पी> हम सत्र "खोल" और "बंद" कर सकते हैं। यदि हमें किसी विशिष्ट डेटासेट की आवश्यकता है, तो हम तय कर सकते हैं कि एक सत्र खुला है। यदि इसमें कोई डेटा नहीं है, तो यह बंद है।

<पी> हमारे Auth0 नियंत्रक में निम्नलिखित पंक्तियाँ याद रखें:

 <पी> पहला व्यक्ति raw_info में मान लिखता है सत्र हैश के लिए हैश की कुंजी, जबकि दूसरा सत्र हैश को साफ़ करता है।

<पी> फिर हम ApplicationHelper में निम्नलिखित सहायक विधि को परिभाषित कर सकते हैं :

 

एक सुरक्षा चिंता

<पी> आइए अब इसे अपने नियंत्रकों के लिए एक चिंता के रूप में उपयोग करें। विचार एक नियंत्रक को परिभाषित करने का है जिसे एक्सेस करने के लिए उपयोगकर्ताओं को लॉग इन करने की आवश्यकता होती है, जैसे कि हमारा private_controller .

<पी> हम निम्नलिखित चिंता फ़ाइल लिख सकते हैं:

 <पी> फिर हम इसे अपने नियंत्रकों में इस प्रकार उपयोग कर सकते हैं:

 <पी> यदि कोई विज़िटर लॉग इन नहीं है, लेकिन फिर /private/index को खोलने का प्रयास करता है पृष्ठ, वे स्वचालित रूप से साइट के रूट पर पुनर्निर्देशित हो जाएंगे।

अन्य प्रदाताओं के साथ एकीकरण

<पी> आप Auth0 के माध्यम से एकाधिक प्रदाताओं पर भरोसा कर सकते हैं। हालाँकि, Google को डिफ़ॉल्ट के रूप में परिभाषित किया गया है। कई कंपनियों के लिए, यह पर्याप्त है।

<पी> यदि आपको अधिक प्रदाताओं की आवश्यकता है, तो प्रमाणीकरण पर जाएं Auth0 में संबंधित किरायेदार के लिए मेनू, और फिर सामाजिक सबमेनू, जहां आप अतिरिक्त प्रदाता सेट कर सकते हैं।

<पी> यह भी ध्यान देने योग्य है कि आप मल्टी-फैक्टर प्रमाणीकरण (एमएफए) को Auth0 के साथ भी कॉन्फ़िगर कर सकते हैं।

<पी> उन कॉन्फ़िगरेशन चरणों को छोड़कर प्रक्रिया वही रहेगी। हमारा एप्लिकेशन केवल यह साबित करने के लिए विज़िटर डेटा लौटाएगा कि विज़िटर को प्रमाणित किया गया है।

प्राधिकरण की ओर खुलना

<पी> अब हम उपयोगकर्ताओं को प्रमाणित कर सकते हैं और कॉलबैक के माध्यम से उनकी जानकारी हमारे एप्लिकेशन को भेज सकते हैं। हम पहले ही देख चुके हैं कि किसी उपयोगकर्ता का ईमेल पता हैश से कैसे निकाला जाए और हमारे डेटाबेस में संबंधित उपयोगकर्ता को कैसे खोजा जाए।

<पी> वहां से, हम प्राधिकरण नीतियों को परिभाषित कर सकते हैं।

<पी> प्राधिकरण नीतियों को परिभाषित करने और उनका उपयोग करने के लिए पंडित एक बेहतरीन विकल्प है, फिर भी यह उपयोगकर्ता की भूमिका की जाँच पर निर्भर करता है।

<पी> role का उपयोग करना वास्तव में, विशेषता सबसे आसान तरीका है। आप रेल्स कंसोल या अपने एप्लिकेशन के बैक-एंड इंटरफ़ेस में उपयोगकर्ता बनाते समय, उपयोगकर्ता के पहले लॉगिन प्रयास से पहले इसे भर सकते हैं।

<पी> या आप व्यवस्थापकों के ईमेल की एक सूची प्राप्त कर सकते हैं और उपयोगकर्ता बनाते समय सूची के विरुद्ध उपयोगकर्ता के ईमेल का मिलान कर सकते हैं।

 <पी> और बस इतना ही!

हमने क्या कवर किया है

<पी> इस आलेख में, हमने सेटअप किया है:

  • Auth0 में एक किरायेदार और आवेदन
  • रूबी ऑन रेल्स एप्लिकेशन में Auth0-संबंधित रत्न
  • एप्लिकेशन में रूट और दृश्य
<पी> हम तो:

  • एक सत्र की अवधारणा की समीक्षा की और देखा कि इसका उपयोग कैसे किया जाए
  • यह जांचने के लिए आधार टूलींग बनाई गई कि कोई उपयोगकर्ता लॉग इन है या नहीं
  • लॉगिन आवश्यकता के पीछे नियंत्रकों को सुरक्षित करने के लिए एक नियंत्रक चिंता जोड़ी गई
  • देखा कि उपयोगकर्ताओं को उनकी भूमिकाओं से कैसे मिलाया जाए
<पी> Auth0 और अन्य प्रमाणीकरण प्रदाता अधिक कोड लिखे बिना आपके रूबी ऑन रेल्स एप्लिकेशन में अत्याधुनिक प्रमाणीकरण को एकीकृत करने में आपकी सहायता कर सकते हैं। यह अक्सर प्रमाणीकरण परत के आपके स्वयं के कार्यान्वयन पर निर्भर रहने या यहां तक कि डेविस जैसे रत्नों का उपयोग करने से कहीं बेहतर विकल्प होता है।

<पी> हैप्पी कोडिंग!

<पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें! Auth0 के साथ रूबी ऑन रेल्स में प्रमाणीकरण को सुव्यवस्थित करना:एक शुरुआती मार्गदर्शिका

थॉमस रिबौलेट

<पी> हमारे अतिथि लेखक थॉमस फ्रांस में स्थित एक सलाहकार बैकएंड और क्लाउड इंफ्रास्ट्रक्चर इंजीनियर हैं। 13 वर्षों से अधिक समय तक, उन्होंने स्टार्टअप्स और कंपनियों के साथ उनकी टीमों, उत्पादों और बुनियादी ढांचे को बढ़ाने के लिए काम किया है। उन्हें फ्रांस की जीएनयू/लिनक्स पत्रिका और उनके ब्लॉग पर भी कई बार प्रकाशित किया गया है।

<पी> थॉमस रिबौलेट

द्वारा सभी लेख
  1. C++ . में एक समबाहु त्रिभुज के वृत्त के क्षेत्रफल की गणना करने का कार्यक्रम C++ . में एक समबाहु त्रिभुज के वृत्त के क्षेत्रफल की गणना करने का कार्यक्रम

    जैसा कि नाम से पता चलता है, समबाहु त्रिभुज वह होता है जिसकी भुजाएँ समान होती हैं और साथ ही इसमें प्रत्येक के 60° के समान आंतरिक कोण होते हैं। इसे नियमित त्रिभुज के रूप में भी जाना जाता है क्योंकि यह एक नियमित बहुभुज है समबाहु त्रिभुज के गुण हैं समान लंबाई की तीन भुजाएं एक ही डिग्री के आंतरिक कोण ज

  1. Python और Matplotlib का उपयोग करके 3D स्कैटर प्लॉट पर अल्फा मान को नियंत्रित करना Python और Matplotlib का उपयोग करके 3D स्कैटर प्लॉट पर अल्फा मान को नियंत्रित करना

    Python और Matplotlib का उपयोग करके 3D स्कैटर प्लॉट पर अल्फा मान को नियंत्रित करने के लिए, हम facecolor और edgecolors मान सेट कर सकते हैं। आकृति का आकार सेट करें और सबप्लॉट के बीच और आसपास पैडिंग समायोजित करें। एक नया आंकड़ा बनाएं या आंकड़ा () . का उपयोग करके मौजूदा आंकड़े को सक्रिय करें विधि। एक ~.

  1. पंडों या Matplotlib में एक ग्राफ में कई बॉक्सप्लॉट प्लॉट करें पंडों या Matplotlib में एक ग्राफ में कई बॉक्सप्लॉट प्लॉट करें

    पंडों या माटप्लोटलिब में एक ग्राफ में कई बॉक्सप्लॉट प्लॉट करने के लिए, हम निम्नलिखित कदम उठा सकते हैं - कदम फिगर साइज सेट करें और सबप्लॉट्स के बीच और आसपास पैडिंग को एडजस्ट करें। दो स्तंभों के साथ एक पांडा डेटा फ़्रेम बनाएं। प्लॉट () . का उपयोग करके डेटा फ़्रेम को प्लॉट करें विधि, kind=boxp