Apache APISIX OpenID Connect प्लगइन का उपयोग करके केंद्रीकृत पहचान प्रमाणीकरण
API7.ai
September 7, 2021
Apache APISIX OpenID Connect प्लगइन का उपयोग करके Okta प्रमाणीकरण को कॉन्फ़िगर करना एक सरल तीन-चरणीय प्रक्रिया है। यह आपको पारंपरिक प्रमाणीकरण मोड से केंद्रीकृत पहचान प्रमाणीकरण मोड में स्विच करने की अनुमति देता है। निम्नलिखित अनुभाग Apache APISIX के लिए OpenID Connect प्लगइन का उपयोग करके Okta प्रमाणीकरण को कॉन्फ़िगर करने के चरणों का वर्णन करते हैं।
केंद्रीकृत पहचान प्रमाणीकरण मोड, पारंपरिक प्रमाणीकरण मोड की तुलना में, निम्नलिखित लाभ प्रदान करता है:
- केंद्रीकृत पहचान प्रमाणीकरण एप्लिकेशन विकास प्रक्रिया को सरल बनाता है।
- केंद्रीकृत पहचान प्रमाणीकरण व्यावसायिक सुरक्षा को बढ़ाता है।
पूर्वापेक्षा
एक Okta खाता तैयार रखें।
चरण 1: Okta को कॉन्फ़िगर करना
- अपने Okta खाते में लॉग इन करें, "Create App Integration" पर क्लिक करके एक Okta एप्लिकेशन बनाएं।

- साइन-इन विधि के लिए "OIDC- OpenID Connect" चुनें, और एप्लिकेशन प्रकार के लिए "Web Application" चुनें।

- लॉगिन और लॉगआउट के लिए रीडायरेक्ट URL सेट करें। "Sign-in redirect URIs" वे लिंक हैं जो सफल लॉगिन के बाद रीडायरेक्ट करने की अनुमति देते हैं, और "Sign-out redirect URIs" वे लिंक हैं जो सफल लॉगिन के बाद रीडायरेक्ट होते हैं। इस उदाहरण में, हम साइन-इन रीडायरेक्ट और साइन-आउट रीडायरेक्ट URIs दोनों को http://127.0.0.1:9080/ पर सेट करते हैं।

- सेटिंग्स पूरी करने के बाद, परिवर्तनों को सहेजने के लिए "Save" पर क्लिक करें।

- एप्लिकेशन के जनरल पेज पर जाएं और निम्नलिखित कॉन्फ़िगरेशन प्राप्त करें, जो Apache APISIX OpenID Connect को कॉन्फ़िगर करने के लिए आवश्यक है।
- क्लाइंट ID: एप्लिकेशन ID, जो नीचे दिए गए client_id से मेल खाता है।
- क्लाइंट सीक्रेट: एप्लिकेशन कुंजी, जो नीचे दिए गए client_secret से मेल खाता है।
- Okta डोमेन: एप्लिकेशन द्वारा उपयोग किया जाने वाला डोमेन नाम, जो नीचे दिए गए {ISSUER} से मेल खाता है।

चरण 2: Apache APISIX स्थापित करना
निर्भरताएँ स्थापित करना
Apache APISIX रनटाइम पर्यावरण को NGINX और etcd पर निर्भरता की आवश्यकता होती है। Apache APISIX स्थापित करने से पहले, कृपया आपके द्वारा उपयोग किए जा रहे ऑपरेटिंग सिस्टम के अनुसार निर्भरताएँ स्थापित करें। हम CentOS7, Fedora 31 & 32, Ubuntu 16.04 & 18.04, Debian 9 & 10, और MacOS के लिए निर्भरता स्थापना निर्देश प्रदान करते हैं, अधिक जानकारी के लिए Install Dependencies देखें।
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 के माध्यम से स्थापित करना
कृपया देखें: Installing Apache APISIX with Docker.
Helm Chart के माध्यम से स्थापित करना
कृपया देखें: Installing Apache APISIX with Helm Chart.
स्रोत रिलीज़ के माध्यम से स्थापित करना
-
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 Official Website - Download Page Apache APISIX, APISIX Dashboard और 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 प्लगइन को कॉन्फ़िगर करें। निम्नलिखित कोड उदाहरण Apache APISIX Admin API के माध्यम से एक रूट बनाता है, अपस्ट्रीम पथ को httpbin.org पर सेट करता है, जो अनुरोधों को प्राप्त करने और प्रतिक्रिया देने के लिए एक सरल बैकएंड सेवा है। निम्नलिखित httpbin.org के get पेज का उपयोग करेगा। अधिक जानकारी के लिए http bin get देखें। विशिष्ट कॉन्फ़िगरेशन आइटम के लिए Apache APISIX OpenID Connect Plugin देखें।
OpenID Connect कॉन्फ़िगरेशन फ़ील्ड नीचे सूचीबद्ध हैं:
| फ़ील्ड | डिफ़ॉल्ट मान | विवरण |
|---|---|---|
| client_id | "" | OAuth क्लाइंट ID। |
| client_secret | "" | OAuth क्लाइंट सीक्रेट। |
| discovery | "" | पहचान प्रदाताओं के लिए सेवा खोज एंडपॉइंट्स। |
| 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 | "" | पहचान प्रदाता के टोकन प्रमाणीकरण एंडपॉइंट का URL, जो खोज से निकाला जाएगा, यदि खाली छोड़ दिया जाए। |
| introspection_endpoint_auth_method | client_secret_basic | टोकन इंट्रोस्पेक्शन के लिए प्रमाणीकरण विधि का नाम। |
| public_key | "" | प्रमाणीकरण टोकन के लिए सार्वजनिक कुंजी। |
| token_signing_alg_values_expected | "" | प्रमाणीकरण टोकन के लिए एल्गोरिदम। |
| set_access_token_header | true | क्या अनुरोध हेडर में एक्सेस टोकन ले जाना है। |
| access_token_in_authorization_header | false | क्या एक्सेस टोकन को Authorization हेडर में रखना है। एक्सेस टोकन को Authorization हेडर में रखा जाता है जब यह मान true होता है और X-Access-Token हेडर में रखा जाता है जब यह false होता है। |
| set_id_token_header | true | क्या X-ID-Token अनुरोध हेडर में ID टोकन ले जाना है। |
| set_userinfo_header | true | क्या X-Userinfo अनुरोध हेडर में उपयोगकर्ता जानकारी ले जाना है। |
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_ISSUER}/.well-known/openid-configuration", "scope":"openid profile", "bearer_only":false, "realm":"master", "introspection_endpoint_auth_method":"client_secret_post", "redirect_uri":"http://127.0.0.1:9080/" } }, "upstream":{ "type":"roundrobin", "nodes":{ "httpbin.org:80":1 } } }'
सत्यापन
-
"http://127.0.0.1:9080/get" पर जाएं और पेज Okta लॉगिन पेज पर रीडायरेक्ट हो जाएगा क्योंकि OpenID Connect प्लगइन सक्षम है।

-
उपयोगकर्ता के Okta खाते के लिए उपयोगकर्ता नाम और पासवर्ड दर्ज करें और "Sign In" पर क्लिक करके अपने Okta खाते में लॉग इन करें।
-
सफल लॉगिन के बाद, आप "httpbin.org" में get पेज तक पहुंच सकते हैं। "httpbin.org/get" पेज अनुरोधित डेटा को X-Access-Token, X-Id-Token, और X-Userinfo के साथ वापस करेगा।
"X-Access-Token": "******Y0RPcXRtc0FtWWVuX2JQaFo1ZVBvSlBNdlFHejN1dXY5elV3IiwiYWxnIjoiUlMyNTYifQ.***TVER3QUlPbWZYSVRzWHRxRWh2QUtQMWRzVDVGZHZnZzAiLCJpc3MiOiJodHRwczovL3FxdGVzdG1hbi5va3RhLmNvbSIsImF1ZCI6Imh0dHBzOi8vcXF0ZXN0bWFuLm9rdGEuY29tIiwic3ViIjoiMjgzMDE4Nzk5QHFxLmNvbSIsImlhdCI6MTYyODEyNjIyNSwiZXhwIjoxNjI4MTI5ODI1LCJjaWQiOiIwb2ExMWc4ZDg3TzBGQ0dYZzY5NiIsInVpZCI6IjAwdWEwNWVjZEZmV0tMS3VvNjk1Iiwic2NwIjpbIm9wZW5pZCIsInByb2Zpb***.****iBshIcJhy8QNvzAFD0fV4gh7OAdTXFMu5k0hk0JeIU6Tfg_Mh-josfap38nxRN5hSWAvWSk8VNxokWTf1qlaRbypJrKI4ntadl1PrvG-HgUSFD0JpyqSQcv10TzVeSgBfOVD-czprG2Azhck-SvcjCNDV-qc3P9KoPQz0SRFX0wuAHWUbj1FRBq79YnoJfjkJKUHz3uu7qpTK89mxco8iyuIwB8fAxPMoXjIuU6-6Bw8kfZ4S2FFg3GeFtN-vE9bE5vFbP-JFQuwFLZNgqI0XO2S7l7Moa4mWm51r2fmV7p7rdpoNXYNerXOeZIYysQwe2_L****", "X-Id-Token": "******aTdDRDJnczF5RnlXMUtPZUtuSUpQdyIsImFtciI6WyJwd2QiXSwic3ViIjoiMDB1YTA1ZWNkRmZXS0xLdW82OTUiLCJpc3MiOiJodHRwczpcL1wvcXF0ZXN0bWFuLm9rdGEuY29tIiwiYXVkIjoiMG9hMTFnOGQ4N08wRkNHWGc2OTYiLCJuYW1lIjoiUGV0ZXIgWmh1IiwianRpIjoiSUQuNGdvZWo4OGUyX2RuWUI1VmFMeUt2djNTdVJTQWhGNS0tM2l3Z0p5TTcxTSIsInZlciI6MSwicHJlZmVycmVkX3VzZXJuYW1lIjoiMjgzMDE4Nzk5QHFxLmNvbSIsImV4cCI6MTYyODEyOTgyNSwiaWRwIjoiMDBvYTA1OTFndHAzMDhFbm02OTUiLCJub25jZSI6ImY3MjhkZDMxMWRjNGY3MTI4YzlmNjViOGYzYjJkMDgyIiwiaWF0IjoxNjI4MTI2MjI1LCJhdXRoX3RpbWUi*****", "X-Userinfo": "*****lfbmFtZSI6IlpodSIsImxvY2FsZSI6ImVuLVVTIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiMjgzMDE4Nzk5QHFxLmNvbSIsInVwZGF0ZWRfYXQiOjE2MjgwNzA1ODEsInpvbmVpbmZvIjoiQW1lcmljYVwvTG9zX0FuZ2VsZXMiLCJzdWIiOiIwMHVhMDVlY2RGZldLTEt1bzY5NSIsImdpdmVuX25hbWUiOiJQZXRlciIsIm5hbWUiOiJQZXRl****"
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 अनुरोध हेडर को अपस्ट्रीम तक ले जाएगा। अपस्ट्रीम इन हेडर को पार्स करके उपयोगकर्ता IDid जानकारी और उपयोगकर्ता मेटाडेटा प्राप्त कर सकता है।
हमने Okta से सीधे Apache APISIX गेटवे में केंद्रीकृत पहचान प्रमाणीकरण बनाने की प्रक्रिया दिखाई है। एक मुफ्त Okta डेवलपर खाता पंजीकृत करना आसान है और शुरू करने के लिए उपयुक्त है। हमारा दृष्टिकोण डेवलपर ओवरहेड को कम करता है और एक सुरक्षित और सुव्यवस्थित अनुभव प्रदान करता है।
Okta के बारे में
Okta आपके एप्लिकेशन में प्रमाणीकरण और प्राधिकरण सेवाएं जोड़ने के लिए एक अनुकूलन योग्य, सुरक्षित और ड्रॉप-इन समाधान है। अपने एप्लिकेशन में स्केलेबल प्रमाणीकरण बनाएं बिना डेवलपमेंट ओवरहेड, सुरक्षा जोखिम और रखरखाव के जो इसे स्वयं कोड करने से आते हैं। आप किसी भी भाषा या स्टैक पर किसी भी एप्लिकेशन को Okta से कनेक्ट कर सकते हैं और परिभाषित कर सकते हैं कि आप चाहते हैं कि आपके उपयोगकर्ता कैसे साइन इन करें। हर बार जब कोई उपयोगकर्ता प्रमाणीकरण करने का प्रयास करता है, Okta उनकी पहचान सत्यापित करेगा और आवश्यक जानकारी आपके एप्लिकेशन को वापस भेजेगा।
Apache APISIX के बारे में
Apache APISIX एक गतिशील, रियल-टाइम, उच्च-प्रदर्शन API गेटवे है। Apache APISIX लोड बैलेंसिंग, डायनामिक अपस्ट्रीम, कैनरी रिलीज़, सर्किट ब्रेकिंग, प्रमाणीकरण, ऑब्जर्वेबिलिटी और अधिक जैसी समृद्ध ट्रैफ़िक प्रबंधन सुविधाएँ प्रदान करता है। आप Apache APISIX का उपयोग पारंपरिक उत्तर-दक्षिण ट्रैफ़िक को संभालने के लिए कर सकते हैं, साथ ही सेवाओं के बीच पूर्व-पश्चिम ट्रैफ़िक को भी। इसे k8s इन्ग्रेस कंट्रोलर के रूप में भी उपयोग किया जा सकता है।
दुनिया भर में सैकड़ों कंपनियों ने Apache APISIX का उपयोग किया है, जिसमें वित्त, इंटरनेट, विनिर्माण, खुदरा, ऑपरेटर्स जैसे NASA, यूरोपीय संघ की डिजिटल फैक्टरी, TravelSky, Tencent, Huawei, Weibo, China Mobile, Taikang, 360 आदि शामिल हैं।
Github: https://github.com/apache/apisix
वेबसाइट: https://apisix.apache.org