Apache APISIX Auth को Okta के साथ कैसे उपयोग करें

Fei Han

September 7, 2021

Ecosystem

Apache APISIX OpenID Connect प्लगइन का उपयोग करके केंद्रीकृत पहचान प्रमाणीकरणApache APISIX OpenID Connect प्लगइन का उपयोग करके Okta प्रमाणीकरण को कॉन्फ़िगर करना एक सरल तीन-चरणीय प्रक्रिया है। यह आपको पारंपरिक प्रमाणीकरण मोड से केंद्रीकृत पहचान प्रमाणीकरण मोड में स्विच करने की अनुमति देता है। निम्नलिखित अनुभाग Apache APISIX के लिए OpenID Connect प्लगइन का उपयोग करके Okta प्रमाणीकरण को कॉन्फ़िगर करने के चरणों का वर्णन करते हैं।

केंद्रीकृत पहचान प्रमाणीकरण मोड, पारंपरिक प्रमाणीकरण मोड की तुलना में, निम्नलिखित लाभ प्रदान करता है:

  1. केंद्रीकृत पहचान प्रमाणीकरण एप्लिकेशन विकास प्रक्रिया को सरल बनाता है।
  2. केंद्रीकृत पहचान प्रमाणीकरण व्यावसायिक सुरक्षा को बढ़ाता है।

पूर्वापेक्षा

एक Okta खाता तैयार रखें।

चरण 1: Okta को कॉन्फ़िगर करना

  1. अपने Okta खाते में लॉग इन करें, "Create App Integration" पर क्लिक करके एक Okta एप्लिकेशन बनाएं। Create App Integration
  2. साइन-इन विधि के लिए "OIDC- OpenID Connect" चुनें, और एप्लिकेशन प्रकार के लिए "Web Application" चुनें। Create a new App Integration
  3. लॉगिन और लॉगआउट के लिए रीडायरेक्ट URL सेट करें। "Sign-in redirect URIs" वे लिंक हैं जो सफल लॉगिन के बाद रीडायरेक्ट करने की अनुमति देते हैं, और "Sign-out redirect URIs" वे लिंक हैं जो सफल लॉगिन के बाद रीडायरेक्ट होते हैं। इस उदाहरण में, हम साइन-इन रीडायरेक्ट और साइन-आउट रीडायरेक्ट URIs दोनों को http://127.0.0.1:9080/ पर सेट करते हैं। Set the redirect URL for login and logout
  4. सेटिंग्स पूरी करने के बाद, "Save" पर क्लिक करके परिवर्तनों को सहेजें। save the changes
  5. एप्लिकेशन के जनरल पेज पर जाएं और निम्नलिखित कॉन्फ़िगरेशन प्राप्त करें, जो Apache APISIX OpenID Connect को कॉन्फ़िगर करने के लिए आवश्यक है।
  • क्लाइंट ID: एप्लिकेशन ID, जो नीचे दिए गए client_id से मेल खाता है।
  • क्लाइंट सीक्रेट: एप्लिकेशन कुंजी, जो नीचे दिए गए client_secret से मेल खाता है।
  • Okta डोमेन: एप्लिकेशन द्वारा उपयोग किया जाने वाला डोमेन नाम, जो नीचे दिए गए {ISSUER} से मेल खाता है।

obtain configuration

चरण 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.

स्रोत रिलीज़ के माध्यम से स्थापित करना

  1. apisix-2.7 नामक एक डायरेक्टरी बनाएं।

    mkdir apisix-2.7
  2. 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 डैशबोर्ड और APISIX Ingress Controller के लिए स्रोत पैकेज भी प्रदान करता है।

  3. Apache APISIX रिलीज़ स्रोत पैकेज को अनज़िप करें।

    tar zxvf apache-apisix-2.7-src.tgz -C apisix-2.7
  4. रनटाइम निर्भर Lua लाइब्रेरीज़ स्थापित करें।

    # apisix-2.7 डायरेक्टरी में स्विच करें cd apisix-2.7 # निर्भरताएँ बनाएं make deps

निर्भरताएँ आरंभ करना

NGINX कॉन्फ़िगरेशन फ़ाइल और etcd को आरंभ करने के लिए निम्नलिखित कमांड चलाएं।

# NGINX कॉन्फ़िगरेशन फ़ाइल और etcd आरंभ करें make init

चरण 3: Apache APISIX शुरू करें और संबंधित रूट कॉन्फ़िगर करें

  1. Apache APISIX शुरू करने के लिए निम्नलिखित कमांड चलाएं।

    apisix start
  2. एक रूट बनाएं और 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""पहचान प्रदाताओं के लिए सेवा खोज एंडपॉइंट्स।
scopeopenidएक्सेस किए जाने वाले संसाधनों का स्कोप।
relmapisixWWW-Authenticate प्रतिक्रिया हेडर प्रमाणीकरण जानकारी निर्दिष्ट करें।
bearer_onlyfalseक्या अनुरोध हेडर में टोकन की जांच करनी है।
logout_path/logoutलॉग आउट URI।
redirect_urirequest_uriपहचान प्रदाता द्वारा वापस रीडायरेक्ट किया जाने वाला URI, डिफ़ॉल्ट रूप से अनुरोध पता।
timeout3अनुरोध टाइमआउट समय, इकाई सेकंड में परिभाषित है।
ssl_verifyfalseपहचान प्रदाता के SSL प्रमाणपत्र को सत्यापित करें।
introspection_endpoint""पहचान प्रदाता के टोकन प्रमाणीकरण एंडपॉइंट का URL, जो खोज, प्रतिक्रिया से निकाला जाएगा यदि खाली छोड़ा गया है।
introspection_endpoint_auth_methodclient_secret_basicटोकन इंट्रोस्पेक्शन के लिए प्रमाणीकरण विधि का नाम।
public_key""प्रमाणीकरण टोकन के लिए सार्वजनिक कुंजी।
token_signing_alg_values_expected""प्रमाणीकरण टोकन के लिए एल्गोरिथ्म।
set_access_token_headertrueक्या अनुरोध हेडर में एक्सेस टोकन ले जाना है।
access_token_in_authorization_headerfalseक्या एक्सेस टोकन को Authorization हेडर में रखना है। एक्सेस टोकन को Authorization हेडर में रखा जाता है जब यह मान true होता है और X-Access-Token हेडर में रखा जाता है जब यह false होता है।
set_id_token_headertrueक्या X-ID-Token अनुरोध हेडर में ID टोकन ले जाना है।
set_userinfo_headertrueक्या 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 } } }'

सत्यापन

  1. "http://127.0.0.1:9080/get" पर जाएं और पेज Okta लॉगिन पेज पर रीडायरेक्ट हो जाएगा क्योंकि OpenID Connect प्लगइन सक्षम है। visit Okta login page

  2. उपयोगकर्ता के Okta खाते के लिए उपयोगकर्ता नाम और पासवर्ड दर्ज करें और "Sign In" पर क्लिक करके अपने Okta खाते में लॉग इन करें।

  3. सफल लॉगिन के बाद, आप "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-Access-Token

X-Id-Token: Apache APISIX उपयोगकर्ता प्रदाता से Id टोकन प्राप्त करेगा और इसे base64 एन्कोडिंग के माध्यम से X-Id-Token अनुरोध हेडर में रखेगा, आप प्लगइन कॉन्फ़िगरेशन में set_id_token_header के माध्यम से इस फ़ंक्शन को सक्षम करना चुन सकते हैं, डिफ़ॉल्ट रूप से यह सक्षम है।

X-Id-Token

X-Userinfo: Apache APISIX उपयोगकर्ता प्रदाता से उपयोगकर्ता जानकारी प्राप्त करेगा और इसे Base64 एन्कोडिंग के बाद X-Userinfo में रखेगा, आप प्लगइन कॉन्फ़िगरेशन में set_userinfo_header के माध्यम से इस फ़ीचर को सक्षम करना चुन सकते हैं, यह डिफ़ॉल्ट रूप से सक्षम है।

X-Userinfo

जैसा कि आप देख सकते हैं, 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

Tags: