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

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

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

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

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

एंटीपैटर्न

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

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 दिनों के बाद ही खत्म हो जाती है. इसलिए, वे डेटा स्टोर (कैसांड्रा) में लंबे समय तक मौजूद रहते हैं, जिससे डेटा लगातार इकट्ठा होता रहता है.

असर

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

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

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

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

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

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

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