एंटीपैटर्न: OAuth टोकन के लिए, एक्सपायर होने की लंबी अवधि सेट करें

Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
पर जाएं Apigee X दस्तावेज़.
info

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

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

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

ऐंटीपैटर्न

OAuthv2 नीति में, ऐक्सेस टोकन और/या रीफ़्रेश टोकन की समयसीमा खत्म होने का समय ज़्यादा सेट करने से, OAuth टोकन इकट्ठा हो जाते हैं. साथ ही, Cassandra नोड पर डिस्क स्पेस का इस्तेमाल बढ़ जाता है.

OAuthV2 की नीति के इस उदाहरण में, रीफ़्रेश टोकन की समयसीमा खत्म होने का समय 200 दिन दिखाया गया है:

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

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

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

असर

  • डेटा स्टोर (Cassandra) पर डिस्क स्पेस का इस्तेमाल काफ़ी बढ़ जाता है.
  • प्राइवेट क्लाउड के उपयोगकर्ताओं के लिए, इससे स्टोरेज की लागत बढ़ सकती है. सबसे खराब स्थिति में, डिस्क पूरी तरह भर सकती है और रनटाइम में गड़बड़ियां आ सकती हैं या सेवा में रुकावट आ सकती है.

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

सुरक्षा से जुड़ी अपनी खास ज़रूरतों के हिसाब से, OAuth ऐक्सेस और रीफ़्रेश टोकन की समयसीमा खत्म होने का समय कम सेट करें, ताकि ये जल्दी मिट जाएं और इकट्ठा न हों.

रीफ़्रेश टोकन की समयसीमा खत्म होने का समय इस तरह सेट करें कि यह ऐक्सेस टोकन की तुलना में थोड़ी ज़्यादा अवधि के लिए मान्य हो. उदाहरण के लिए, अगर आपने ऐक्सेस टोकन के लिए 30 मिनट और रीफ़्रेश टोकन के लिए 60 मिनट सेट किए हैं.

इससे यह पक्का होता है कि:

  • ऐक्सेस टोकन की समयसीमा खत्म होने के बाद, नए ऐक्सेस और रीफ़्रेश टोकन जनरेट करने के लिए, रीफ़्रेश टोकन का इस्तेमाल करने के लिए काफ़ी समय मिलता है.
  • रीफ़्रेश टोकन की समयसीमा थोड़ी देर बाद खत्म होगी. साथ ही, इन्हें समय पर मिटाया जा सकता है, ताकि ये इकट्ठा न हों .

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