एंटीपैटर्न: OAuth टोकन के लिए, खत्म होने की कोई समयसीमा सेट न करें

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

Apigee Edge इन कामों के लिए OAuth 2.0 फ़्रेमवर्क उपलब्ध कराता है सुरक्षित एपीआई. OAuth2 सबसे लोकप्रिय ओपन-स्टैंडर्ड, टोकन पर आधारित ऑथेंटिकेशन और अनुमति देने के तरीकों का इस्तेमाल करने के बारे में बताया गया है. यह क्लाइंट ऐप्लिकेशन को बिना किसी शुल्क के, उपयोगकर्ताओं की ओर से एपीआई ऐक्सेस करने की सुविधा देता है उपयोगकर्ताओं को अपना उपयोगकर्ता नाम और पासवर्ड बताना होगा.

Apigee Edge की मदद से, डेवलपर इनमें से किसी एक को लागू करके, ऐक्सेस और/या रीफ़्रेश टोकन जनरेट कर सकते हैं OAuth2 के चार तरह के अनुदान - क्लाइंट के क्रेडेंशियल, password, इंप्लिसिट, और ऑथराइज़ेशन कोड - OAuthv2 नीति का इस्तेमाल करना. क्लाइंट ऐप्लिकेशन, सुरक्षित एपीआई का इस्तेमाल करने के लिए ऐक्सेस टोकन का इस्तेमाल करते हैं. हर ऐक्सेस टोकन की समयसीमा खत्म होती है समय, जिसे OAuthv2 नीति में सेट किया जा सकता है.

रीफ़्रेश टोकन, वैकल्पिक तौर पर कुछ अनुमतियों के साथ ऐक्सेस टोकन के साथ जारी किए जाते हैं. रीफ़्रेश करें टोकन की मदद से, ओरिजनल ऐक्सेस टोकन की समयसीमा खत्म होने के बाद नए और मान्य ऐक्सेस टोकन हासिल किए जाते हैं या निरस्त कर दिया गया है. OAuthv2 नीति में भी रीफ़्रेश टोकन के खत्म होने की समयसीमा सेट की जा सकती है.

यह एंटीपैटर्न, इसके एंटीपैटर्न से जुड़ा है समयसीमा खत्म होने की लंबी अवधि सेट करना OAuth टोकन के लिए.

एंटीपैटर्न

OAuthv2 नीति में रीफ़्रेश टोकन के लिए कोई खत्म होने की तारीख सेट नहीं करना इससे OAuth टोकन इकट्ठा होने और कैसंड्रा नोड पर डिस्क की जगह का इस्तेमाल बढ़ जाता है.

OAuthV2 नीति का उदाहरण नीचे दिया गया है कि इसके लिए कोई कॉन्फ़िगरेशन मौजूद नहीं है <RefreshTokenExpiresIn>:

<OAuthV2 name="GenerateAccessToken">
    <Operation>GenerateAccessToken</Operation>
    <ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
    <!--<RefreshTokenExpiresIn> is missing -->
    <SupportedGrantTypes>
      <GrantType>password</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
</OAuthV2>

ऊपर दिए गए उदाहरण में:

  • ऐक्सेस टोकन की समयसीमा, काफ़ी कम होती है. यह 30 मिनट की होती है.
  • रीफ़्रेश टोकन की समयसीमा सेट नहीं है.
  • रीफ़्रेश टोकन, डेटा स्टोर (कैसांद्रा) में हमेशा मौजूद रहता है. इससे डेटा इकट्ठा हो रहा है संग्रह.
  • ऐक्सेस टोकन जनरेट करने के लिए, बिना किसी समयसीमा वाले रीफ़्रेश टोकन का हमेशा के लिए इस्तेमाल किया जा सकता है.
  • अगर इस एपीआई पर आने वाला ट्रैफ़िक 10 अनुरोध प्रति सेकंड है, तो यह 8,64,000 टोकन तक जनरेट कर सकता है एक दिन में.

असर

  • अगर रीफ़्रेश टोकन को किसी समयसीमा खत्म हुए बिना बनाया जाता है, तो इसके दो बड़े नतीजे होते हैं:
    • रीफ़्रेश टोकन को आने वाले समय में कभी भी इस्तेमाल किया जा सकता है. ऐसा हो सकता है कि कई सालों तक ऐक्सेस पाने के लिए, इस टोकन का इस्तेमाल किया जा सके टोकन. इससे सुरक्षा पर असर पड़ सकता है.
    • कैसंड्रा में रीफ़्रेश टोकन वाली पंक्ति को कभी नहीं मिटाया जाएगा. इससे कसांद्रा में डेटा इकट्ठा हो जाएगा.
  • अगर रीफ़्रेश टोकन का इस्तेमाल नहीं किया जाता है लेकिन इसके बजाय नया रीफ़्रेश टोकन और ऐक्सेस टोकन बनाएं. पुराना रीफ़्रेश टोकन कैसंड्रा में बना रहेगा. इस वजह से, रीफ़्रेश करें केसांद्रा में टोकन इकट्ठा होते रहेंगे. डिस्क का ज़्यादा इस्तेमाल, और कॉम्पैक्टिकेशन ज़्यादा हो जाएगा. साथ ही, आखिर में फ़ाइल पढ़ने/लिखने की क्षमता भी होगी कैसंड्रा में इंतज़ार के समय का हिसाब रखता है.

सबसे सही तरीका

रीफ़्रेश और ऐक्सेस टोकन, दोनों के लिए, समयसीमा खत्म होने की सही समयसीमा का इस्तेमाल करें. यहां जाएं: सबसे सही तरीका ऐक्सेस खत्म होने की तारीख सेट करने के लिए रीफ़्रेश करने और टोकन ऐक्सेस करने का समय. दोनों ऐक्सेस के लिए, ऐक्सेस खत्म होने की तारीख से जुड़ा कॉन्फ़िगरेशन तय करना न भूलें और रीफ़्रेश टोकन से जुड़ी नीति में जाएं. देखें OauthV2 नीति का दस्तावेज़ पर जाएं.

खास तौर पर, प्राइवेट क्लाउड के ग्राहकों के लिए Edge इस्तेमाल करने के सबसे सही तरीके

इस सेक्शन में, प्राइवेट क्लाउड के ग्राहकों के लिए, Edge इस्तेमाल करने के सबसे सही तरीके बताए गए हैं.

रीफ़्रेश टोकन के लिए डिफ़ॉल्ट तौर पर खत्म होने की समयसीमा तय करना

अगर नीति के कॉन्फ़िगरेशन में, रीफ़्रेश टोकन की समयसीमा खत्म होने की जानकारी नहीं दी गई है, तो डिफ़ॉल्ट तौर पर, Edge, बिना किसी समयसीमा के रीफ़्रेश टोकन बनाता है. आप ऐसा करके यह व्यवहार बदल सकते हैं यह तरीका अपनाएं:

  1. किसी मैसेज प्रोसेसर नोड पर, कॉन्फ़िगरेशन ओवरराइड फ़ाइल में बदलाव करें या बनाएं $APIGEE_ROOT/customer/application/message-processor.properties. पक्का करें कि यह फ़ाइल apigee उपयोगकर्ता आसानी से पढ़ सकता है.
  2. फ़ाइल में यह लाइन जोड़ें:
    conf_keymanagement_oauth_refresh_token_expiry_time_in_millis=3600000
    अगर नीति में कोई जानकारी तय नहीं की गई है, तो इससे डिफ़ॉल्ट तौर पर रीफ़्रेश टोकन के खत्म होने की अवधि एक घंटे पर सेट हो जाएगी. अपने कारोबार की ज़रूरतों के हिसाब से, इस डिफ़ॉल्ट वैल्यू को बदला जा सकता है.
  3. मैसेज प्रोसेस करने वाली सेवा को रीस्टार्ट करें:
    apigee-service edge-message-processor restart
  4. ऊपर दिए गए चरणों को सभी मैसेज प्रोसेसर नोड में एक-एक करके दोहराएं.

कैसंड्रा में सबसे सही तरीके

Apigee के सार्वजनिक तौर पर उपलब्ध नए वर्शन पर अपग्रेड करें. Apigee जारी है जिसमें सुधार और सुधारों को रिलीज़ किया गया है, जिससे मैनेजमेंट में लगातार सुधार और सुधार होता रहता है Apigee में टोकन की संख्या. Apigee में, ऐक्सेस और रीफ़्रेश टोकन, Cassandra में स्टोर किए जाते हैं कीस्पेस के अंदर होगी. आपको यह पक्का करना होगा कि इस कैंपेन की कंपैक्शन रणनीति keyspace को LeveledCompactionStrategy पर सेट किया गया है. जांच लें कि नीचे दिए गए इंडेक्स मौजूद नहीं हैं:
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_organization_name_idx#f0f0f0 और
  • kms.oauth_20_access_tokens.oauth_20_access_tokens_status_idx

इसे कम करने के लिए, kms.oauth_20_access_tokens टेबल में gc_grace_seconds डिफ़ॉल्ट 10 दिनों से कम पर सेट होती है यह पक्का करने के लिए कि टोकन मिटाए जाने की वजह से जनरेट हुए टूंबस्टोन (जैसे कि तीन दिन) जनरेट हुए हैं (जैसे कि तीन दिन) डेटा स्टोर से तेज़ी से पर्ज किया जाता है.

इसके बारे में और पढ़ें