Apache APISIX और Authing का उपयोग करके केंद्रीकृत प्रमाणीकरण प्रबंधन लागू करना
API7.ai
January 4, 2022
परिचय
Apache APISIX के बारे में
Apache APISIX एक डायनामिक, रियल-टाइम, हाई-परफॉर्मेंस API गेटवे है जो लोड बैलेंसिंग, डायनामिक अपस्ट्रीम, कैनरी रिलीज़, सर्विस मेल्टडाउन, प्रमाणीकरण, ऑब्जर्वेबिलिटी आदि जैसी समृद्ध ट्रैफिक प्रबंधन सुविधाएँ प्रदान करता है। Apache APISIX न केवल डायनामिक प्लगइन परिवर्तन और हॉट-प्लगिंग का समर्थन करता है, बल्कि इसमें कई उपयोगी प्लगइन्स भी हैं। Apache APISIX के लिए OpenID Connect प्लगइन OpenID Connect प्रोटोकॉल के समर्थन के साथ, उपयोगकर्ता इस प्लगइन का उपयोग करके Apache APISIX को Authing सेवाओं के साथ इंटरफेस करने और इसे उद्यम में एक केंद्रीकृत प्रमाणीकरण गेटवे के रूप में तैनात करने में सक्षम बना सकते हैं।
Authing के बारे में
Authing चीन में पहला डेवलपर-केंद्रित पूर्ण-दृश्य पहचान क्लाउड उत्पाद है, जो सभी मुख्यधारा की पहचान प्रोटोकॉल को एकीकृत करता है और उद्यमों और डेवलपर्स के लिए पूर्ण और सुरक्षित उपयोगकर्ता प्रमाणीकरण और पहुंच प्रबंधन सेवाएं प्रदान करता है। "API First" को उत्पाद की आधारशिला के रूप में, पहचान क्षेत्र में सभी सामान्य कार्यों को मॉड्यूलर रूप से एनकैप्सुलेट किया गया है, और सभी क्षमताओं को पूर्ण-दृश्य प्रोग्रामिंग भाषा SDK के माध्यम से डेवलपर्स को API के रूप में प्रदान किया जाता है। साथ ही, उपयोगकर्ता विभिन्न व्यावसायिक परिदृश्यों में विभिन्न उद्यमों की पहचान प्रबंधन आवश्यकताओं को पूरा करने के लिए Authing के खुले RESTful APIs का लचीले ढंग से उपयोग कर सकते हैं।
केंद्रीकृत प्रमाणीकरण क्या है
पारंपरिक प्रमाणीकरण मोड
पारंपरिक प्रमाणीकरण मोड में, प्रत्येक बैकएंड एप्लिकेशन सेवा को प्रमाणीकरण कार्य का समर्थन करने के लिए अलग-अलग कार्य विकसित करने की आवश्यकता होती है, जैसे कि पहचान प्रदाता के साथ इंटरैक्ट करना और उपयोगकर्ता की पहचान जानकारी प्राप्त करना।

केंद्रीकृत पहचान प्रमाणीकरण मोड
पारंपरिक प्रमाणीकरण मोड के विपरीत, केंद्रीकृत प्रमाणीकरण मोड उपयोगकर्ता प्रमाणीकरण को एप्लिकेशन सेवा से बाहर ले जाता है। Apache APISIX को उदाहरण के रूप में लें, केंद्रीकृत प्रमाणीकरण की प्रक्रिया ऊपर दिए गए चित्र में दिखाई गई है: पहले, उपयोगकर्ता एक अनुरोध शुरू करता है, और फिर फ्रंट गेटवे उपयोगकर्ता प्रमाणीकरण प्रक्रिया के लिए जिम्मेदार होता है, पहचान प्रदाता के साथ इंटरफेस करता है और पहचान प्रदाता को एक प्राधिकरण अनुरोध भेजता है। पहचान प्रदाता उपयोगकर्ता जानकारी लौटाता है। गेटवे उपयोगकर्ता पहचान पूरा करने के बाद, यह उपयोगकर्ता पहचान जानकारी को बैकएंड एप्लिकेशन को अनुरोध हेडर के रूप में अग्रेषित करता है।

केंद्रीकृत पहचान प्रमाणीकरण मोड के लाभ
पारंपरिक प्रमाणीकरण मोड की तुलना में, केंद्रीकृत प्रमाणीकरण मोड के निम्नलिखित लाभ हैं।
- एप्लिकेशन विकास प्रक्रिया को सरल बनाएं, एप्लिकेशन कार्यभार और रखरखाव लागत को कम करें, और प्रत्येक एप्लिकेशन के लिए प्रमाणीकरण तर्क के दोहराव विकास से बचें।
- व्यावसायिक सुरक्षा में सुधार करें, केंद्रीकृत प्रमाणीकरण मोड गेटवे स्तर पर अनप्रमाणित अनुरोधों को समय पर रोक सकता है ताकि बैकएंड एप्लिकेशन की सुरक्षा की जा सके।
साथ ही, Authing के शक्तिशाली प्रमाणीकरण प्रबंधन कार्यों के साथ, निम्नलिखित कार्य प्राप्त किए जा सकते हैं।
- कंसोल के माध्यम से प्रमाणीकरण सेवाओं का जीवनचक्र प्रबंधन, जिसमें निर्माण, सक्षम करना, अक्षम करना आदि शामिल हैं।
- रियल-टाइम, दृश्य एप्लिकेशन मॉनिटरिंग, जिसमें शामिल हैं: इंटरफेस अनुरोधों की संख्या, इंटरफेस कॉल विलंबता और इंटरफेस त्रुटि जानकारी, और रियल-टाइम अलार्म सूचना।
- केंद्रीकृत लॉगिंग जो उपयोगकर्ता लॉगिन, लॉगआउट, और एप्लिकेशन में समायोजन और संशोधन के बारे में जानकारी को आसानी से देखने की अनुमति देता है।
अधिक जानकारी के लिए Authing Access Gateway देखें।
Apache APISIX और Authing का उपयोग करके केंद्रीकृत पहचान प्रमाणीकरण कैसे लागू करें
चरण 1: Authing कॉन्फ़िगर करें
- अपने Authing खाते में लॉगिन करें, अपना ऐप बनाएं चुनें और ऐप का नाम और प्रमाणीकरण पता भरें। यदि आपके पास Authing खाता नहीं है, तो कृपया Authing पर जाएं, ऊपरी दाएं कोने में "लॉगिन/रजिस्टर" पर क्लिक करके एक Authing खाता पंजीकृत करें।

- बनाएं पर क्लिक करके एक Authing एप्लिकेशन बनाएं।

- प्रमाणीकरण प्रक्रिया के दौरान, Authing कॉन्फ़िगर किए गए लॉगिन कॉलबैक URL और लॉगआउट कॉलबैक URL को APISIX एक्सेस एड्रेस http://127.0.0.1:9080/ पर सेट करता है।

- उपयोगकर्ता बनाएं (वैकल्पिक)। उपयोगकर्ता सूची पृष्ठ पर, user1/user1 खाता पासवर्ड के साथ एक उपयोगकर्ता बनाएं, और आप "उपयोगकर्ता जानकारी - प्राधिकरण प्रबंधन" पृष्ठ पर एप्लिकेशन तक पहुंच की अनुमति सेट कर सकते हैं (डिफ़ॉल्ट रूप से अनुमति दी जाती है)।

- एप्लिकेशन पृष्ठ पर निम्नलिखित कॉन्फ़िगरेशन के लिए जाएं, जो Apache APISIX OpenID Connect कॉन्फ़िगर करते समय आवश्यक है।
- ऐप ID: OAuth क्लाइंट ID, यानी एप्लिकेशन का ID, जो
client_idऔर{YOUR_CLIENT_ID}से मेल खाता है। - ऐप सीक्रेट: OAuth क्लाइंट सीक्रेट, यानी एप्लिकेशन कुंजी। यह
client_secretऔर{YOUR_CLIENT_SECRET}से मेल खाता है। - सेवा_डिस्कवरी_एड्रेस: एप्लिकेशन सेवा डिस्कवरी का पता। यह
{YOUR_DISCOVERY}से मेल खाता है।
- ऐप ID: OAuth क्लाइंट ID, यानी एप्लिकेशन का ID, जो
चरण 2: Apache APISIX स्थापित करें
आप Apache APISIX को स्रोत पैकेज, Docker, Helm Chart आदि सहित विभिन्न तरीकों से स्थापित कर सकते हैं।
निर्भरताएँ स्थापित करें
Apache APISIX रनटाइम वातावरण को NGINX और etcd पर निर्भरता की आवश्यकता होती है।
Apache APISIX स्थापित करने से पहले, कृपया आपके द्वारा उपयोग किए जा रहे ऑपरेटिंग सिस्टम के अनुसार निर्भरताएँ स्थापित करें। हम CentOS7, Fedora 31 और 32, Ubuntu 16.04 और 18.04, Debian 9 और 10, और macOS के लिए निर्भरता स्थापना निर्देश प्रदान करते हैं। अधिक जानकारी के लिए निर्भरताएँ स्थापित करें देखें।
RPM पैकेज के माध्यम से स्थापना (CentOS 7)
यह स्थापना विधि CentOS 7 के लिए उपयुक्त है; कृपया Apache APISIX स्थापित करने के लिए निम्नलिखित कमांड चलाएं।
sudo yum install -y https://github.com/apache/apisix/releases/download/2.7/apisix-2.7-0.x86_64.rpm
Docker के माध्यम से स्थापना
कृपया Docker के साथ Apache APISIX स्थापित करें देखें।
Helm Chart के माध्यम से स्थापना
कृपया Helm Chart के साथ Apache APISIX स्थापित करें देखें।
स्रोत रिलीज़ के माध्यम से स्थापना
apisix-2.7नामक एक निर्देशिका बनाएं।
mkdir apisix-2.7
- Apache APISIX रिलीज़ स्रोत पैकेज डाउनलोड करें।
wget https://downloads.apache.org/apisix/2.7/apache-apisix-2.7-src.tgz
आप Apache APISIX रिलीज़ स्रोत पैकेज को Apache APISIX वेबसाइट से भी डाउनलोड कर सकते हैं। Apache APISIX आधिकारिक वेबसाइट - डाउनलोड पृष्ठ Apache APISIX, APISIX डैशबोर्ड, और APISIX Ingress Controller के लिए स्रोत पैकेज भी प्रदान करता है।
- Apache APISIX रिलीज़ स्रोत पैकेज को अनज़िप करें।
tar zxvf apache-apisix-2.7-src.tgz -C apisix-2.7
- रनटाइम-निर्भर Lua लाइब्रेरीज़ स्थापित करें।
# apisix-2.7 निर्देशिका पर स्विच करें cd apisix-2.7 # निर्भरताएँ बनाएं make deps
निर्भरताएँ आरंभ करें
NGINX कॉन्फ़िगरेशन फ़ाइल और etcd को आरंभ करने के लिए निम्नलिखित कमांड चलाएं।
# NGINX कॉन्फ़िगरेशन फ़ाइल और etcd आरंभ करें make init
चरण 3: Apache APISIX शुरू करें और रूट कॉन्फ़िगर करें
-
Apache APISIX शुरू करने के लिए निम्नलिखित कमांड चलाएं।
apisix start -
रूट बनाएं और OpenID Connect प्लगइन कॉन्फ़िगर करें। OpenID Connect कॉन्फ़िगरेशन सूची निम्नलिखित है।
| फ़ील्ड | डिफ़ॉल्ट मान | विवरण |
|---|---|---|
| client_id | N/A | OAuth क्लाइंट ID |
| client_secret | N/A | OAuth क्लाइंट सीक्रेट कुंजी |
| discovery | N/A | पहचान प्रदाताओं के लिए सेवा डिस्कवरी एंडपॉइंट |
| scope | openid | संसाधन स्कोप तक पहुंच की आवश्यकता |
| relm | apisix | WWW-Authenticate प्रतिक्रिया हेडर प्रमाणीकरण जानकारी निर्दिष्ट करें |
| bearer_only | false | अनुरोध हेडर में टोकन की जांच करें या नहीं |
| logout_path | /logout | लॉगआउट URI |
| redirect_uri | request_uri | पहचान प्रदाता द्वारा वापस बाउंस किया जाने वाला URI, डिफ़ॉल्ट रूप से अनुरोध पता |
| timeout | 3 | अनुरोध टाइमआउट समय सेकंड में |
| ssl_verify | false | पहचान प्रदाता का SSL प्रमाणपत्र जांचें या नहीं |
| introspection_endpoint | N/A | पहचान प्रदाता का टोकन प्रमाणीकरण एंडपॉइंट URL, यदि खाली छोड़ा जाए तो डिस्कवरी प्रतिक्रिया से निकाला जाएगा। |
| introspection_endpoint_auth_method | client_secret_basic | टोकन इंट्रोस्पेक्शन के लिए प्रमाणीकरण विधि का नाम |
| public_key | N/A | प्रमाणीकरण टोकन के लिए सार्वजनिक कुंजी |
| token_signing_alg_values_expected | N/A | प्रमाणीकरण टोकन के लिए एल्गोरिदम |
| set_access_token_header | true | अनुरोध हेडर में एक्सेस टोकन ले जाएं या नहीं |
| access_token_in_authorization_header | false | एक्सेस टोकन को Authorization हेडर में रखें जब true हो, और X-Access-Token हेडर में जब false हो। |
| set_id_token_header | false | X-ID-Token अनुरोध हेडर में ID टोकन ले जाएं या नहीं |
| set_userinfo_header | false | X-Userinfo अनुरोध हेडर में उपयोगकर्ता जानकारी ले जाएं या नहीं |
निम्नलिखित कोड उदाहरण Apache APISIX Admin API के माध्यम से एक रूट बनाता है, रूट अपस्ट्रीम को httpbin.org पर सेट करता है। httpbin.org एक सरल बैकएंड सेवा है जो अनुरोध प्राप्त करने और प्रतिक्रिया देने के लिए उपयोग की जाती है, httpbin.org का get पृष्ठ नीचे उपयोग किया जाएगा, http bin get देखें।
विशिष्ट कॉन्फ़िगरेशन आइटम के लिए, कृपया Apache APISIX OpenID Connect प्लगइन देखें।
curl -XPOST 127.0.0.1:9080/apisix/admin/routes -H "X-Api-Key: edd1c9f034335f136f87ad84b625c8f1" -d '{ "uri":"/*", "plugins":{ "openid-connect":{ "client_id":"{YOUR_CLIENT_ID}", "client_secret":"{YOUR_CLIENT_SECRET}", "discovery":"https://{YOUR_DISCOVERY}", "scope":"openid profile", "bearer_only":false, "realm":"apisix", "introspection_endpoint_auth_method":"client_secret_post", "redirect_uri":"http://127.0.0.1:9080/" } }, "upstream":{ "type":"roundrobin", "nodes":{ "httpbin.org:80":1 } } }'
चरण 4: Apache APISIX तक पहुंचें
-
"http://127.0.0.1:9080/get" पर जाएं और पृष्ठ Authing लॉगिन पृष्ठ पर रीडायरेक्ट हो जाता है क्योंकि OpenID Connect प्लगइन पहले से ही सक्षम है (यह पृष्ठ Authing कंसोल में "एप्लिकेशन - ब्रांडिंग" के तहत अनुकूलित किया जा सकता है)।

-
Authing के साथ पंजीकृत उपयोगकर्ता खाते के लिए पासवर्ड दर्ज करें, या चरण 1 में बनाए गए उपयोगकर्ता user1/user1, और लॉगिन करने के लिए लॉगिन पर क्लिक करें।
-
सफल लॉगिन के बाद, आप httpbin.org में get पृष्ठ तक सफलतापूर्वक पहुंच सकते हैं। httpbin.org/get पृष्ठ अनुरोधित डेटा को निम्नलिखित रूप में वापस करेगा।
... "X-Access-Token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InFqeU55aVdVd2NhbUFxdEdVRUNCeFNsTWxQSWtTR2N1NmkyZzhEUk1OSGsifQ.eyJqdGkiOiJjTy16a0pCS0NSRFlHR2kyWkJhY0oiLCJzdWIiOiI2MWM5OGFmOTg0MjI4YWU0OTYyMDU4NTIiLCJpYXQiOjE2NDA1OTg4NTgsImV4cCI6MTY0MTgwODQ1OCwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSIsImlzcyI6Imh0dHBzOi8vYXBpc2l4LmF1dGhpbmcuY24vb2lkYyIsImF1ZCI6IjYxYzk4M2M0YjI4NzdkNDg2OWRkOGFjYiJ9.l2V8vDWcCObB1LjIhKs2ARG4J7WuB-0c-bnYZG2GP2zcpl6PMAPcId2B76CaXCU58ajGcfRmOlWJ67UaHrfWKv8IM4vcYN1gwhKdokSyrhEM31gQE-MzNEsEbPaVIGXdpR1N2JnAJK5-tKIjopDAXSwArfO6fQKTpjLhCi3COIA169WGRR4CKCwNzzpFAYP2ilNc18D_HRTBLS6UjxZSNUtWE5dbx7uBjblhwIwn5e1fxiEQcknVK8Dxf8NUliFECvr02HX2hNvmuCECkvA_mZYlshAeqidK8tSEXirAWsWS5jlXFqLiBJkhSHFrbxRyqeOSfJCJR_YcCwk9AzgZGg", "X-Id-Token": "eyJhdF9oYXNoIjoiRl8tRjZaUVgtWVRDNEh0TldmcHJmUSIsImJpcnRoZGF0ZSI6bnVsbCwiZmFtaWx5X25hbWUiOm51bGwsImdlbmRlciI6IlUiLCJnaXZlbl9uYW1lIjpudWxsLCJpc3MiOiJodHRwczpcL1wvYXBpc2l4LmF1dGhpbmcuY25cL29pZGMiLCJwaWN0dXJlIjoiaHR0cHM6XC9cL2ZpbGVzLmF1dGhpbmcuY29cL2F1dGhpbmctY29uc29sZVwvZGVmYXVsdC11c2VyLWF2YXRhci5wbmciLCJwcmVmZXJyZWRfdXNlcm5hbWUiOm51bGwsInVwZGF0ZWRfYXQiOiIyMDIxLTEyLTI3VDA5OjU0OjE3Ljc3M1oiLCJ3ZWJzaXRlIjpudWxsLCJ6b25laW5mbyI6bnVsbCwibmFtZSI6bnVsbCwiaWF0IjoxNjQwNTk4ODU4LCJuaWNrbmFtZSI6bnVsbCwibm9uY2UiOiJmMTlmZjhjODM5NzdmZjNlMDczMzZmMzg3Y2QxM2EzMSIsIm1pZGRsZV9uYW1lIjpudWxsLCJleHAiOjE2NDE4MDg0NTgsInN1YiI6IjYxYzk4YWY5ODQyMjhhZTQ5NjIwNTg1MiIsImxvY2FsZSI6bnVsbCwiYXVkIjoiNjFjOTgzYzRiMjg3N2Q0ODY5ZGQ4YWNiIiwicHJvZmlsZSI6bnVsbH0=", "X-Userinfo": "eyJ3ZWJzaXRlIjpudWxsLCJ6b25laW5mbyI6bnVsbCwibmFtZSI6bnVsbCwicHJvZmlsZSI6bnVsbCwibmlja25hbWUiOm51bGwsInN1YiI6IjYxYzk4YWY5ODQyMjhhZTQ5NjIwNTg1MiIsImxvY2FsZSI6bnVsbCwiYmlydGhkYXRlIjpudWxsLCJmYW1pbHlfbmFtZSI6bnVsbCwiZ2VuZGVyIjoiVSIsImdpdmVuX25hbWUiOm51bGwsIm1pZGRsZV9uYW1lIjpudWxsLCJwaWN0dXJlIjoiaHR0cHM6XC9cL2ZpbGVzLmF1dGhpbmcuY29cL2F1dGhpbmctY29uc29sZVwvZGVmYXVsdC11c2VyLWF2YXRhci5wbmciLCJwcmVmZXJyZWRfdXNlcm5hbWUiOm51bGwsInVwZGF0ZWRfYXQiOiIyMDIxLTEyLTI3VDA5OjU0OjE3Ljc3M1oifQ==" ...X-Access-Token: Apache APISIX उपयोगकर्ता प्रदाता से प्राप्त एक्सेस टोकन को
X-Access-Tokenअनुरोध हेडर में रखता है, वैकल्पिक रूप से प्लगइन कॉन्फ़िगरेशन मेंaccess_token_in_authorization_headerके माध्यम से Authorization अनुरोध हेडर में।
X-Id-Token: Apache APISIX उपयोगकर्ता प्रदाता से प्राप्त ID टोकन को base64 एन्कोडिंग के बाद X-Id-Token अनुरोध हेडर में रखता है, जिसे प्लगइन कॉन्फ़िगरेशन में
set_id_token_headerके माध्यम से सक्षम या अक्षम किया जा सकता है।
X-Userinfo: Apache APISIX उपयोगकर्ता प्रदाता से प्राप्त उपयोगकर्ता जानकारी को base64 एन्कोडिंग के बाद X-Userinfo में रखता है। आप प्लगइन कॉन्फ़िगरेशन में
set_userinfo_headerका उपयोग करके इस सुविधा को सक्षम या अक्षम कर सकते हैं।
जैसा कि आप देख सकते हैं, Apache APISIX अपस्ट्रीम को
X-Access-Token,X-Id-TokenऔरX-Userinfoअनुरोध हेडर ले जाएगा। अपस्ट्रीम इन हेडर को पार्स करके उपयोगकर्ता ID जानकारी और उपयोगकर्ता मेटाडेटा प्राप्त कर सकता है। -
Authing कंसोल में "ऑडिट लॉग - उपयोगकर्ता व्यवहार लॉग" में, आप user1 लॉगिन जानकारी देख सकते हैं।

सारांश
यह लेख Apache APISIX को Authing के साथ इंटरफेस करने के लिए विस्तृत चरणों का वर्णन करता है।
Apache APISIX न केवल अपने उच्च प्रदर्शन को बनाए रखने के लिए प्रतिबद्ध है, बल्कि हमेशा ओपन सोर्स पारिस्थितिकी के निर्माण पर भी बहुत महत्व देता है। वर्तमान में, Apache APISIX में 10+ प्रमाणीकरण प्राधिकरण-संबंधित प्लगइन हैं जो उद्योग में मुख्यधारा के प्रमाणीकरण प्राधिकरण सेवाओं के साथ इंटरफेस करने का समर्थन करते हैं।
यदि आपको अन्य प्रमाणीकरण प्राधिकरणों के साथ इंटरफेस करने की आवश्यकता है, तो Apache APISIX के GitHub पर जाएं और issue के माध्यम से अपने सुझाव दें; या Apache APISIX के मेलिंग सूची की सदस्यता लें और ईमेल के माध्यम से अपने विचार व्यक्त करें।