मेरे कोणीय ऐप और मेरे आरईएसटी एपीआई के लिए सही OAuth2 अनुदान प्रकार चुनने में मेरी सहायता करें?
यूएक्स-वार मुझे my . पर सिर्फ एक लॉगिन फॉर्म चाहिएफ्रंट-एंड, जो उपयोगकर्ता नाम/पास मांगेगा (अनुमति मांगने वाला कोई संवाद नहीं)। मुझे लगता है कि "संसाधन स्वामी (पासवर्ड) अनुदान" मेरे लिए सबसे उपयुक्त है (क्योंकि मैं फ्रंट और बैकएंड को नियंत्रित करता हूं), लेकिन मुझे यकीन नहीं है कि मुझे एक्सेस टोकन रीफ्रेश को कैसे संभालना चाहिए।
अगर मैं प्रवाह के बारे में गलत हूं तो मुझे सुधारें:
- जब उपयोगकर्ता लॉगिन फॉर्म के माध्यम से क्रेडेंशियल जमा करता है,
access token
वापस आ गया है - मैं इस टोकन को स्टोर कर सकता हूं
LocalStorage
इसके साथ बाद में अजाक्स अनुरोध करने के लिए। - जैसा मैं समझा हूँ
access tokens
अल्पकालिक होना चाहिए। और के साथ अद्यतन किया जाना चाहिएRefresh token
। चाहिएrefresh token
के साथ वापस किया जा सकता हैaccess token
प्रारंभिक लॉगिन के बाद और क्लाइंट पर भी संग्रहीत? यदि नहीं तो विकल्प क्या है?- क्या सर्वर पर आह्वान करने के लिए कोई सत्र बनाए रखा जाना चाहिए
access token
ताज़ा करें? या मुझे रीफ्रेश करने के लिए फ्रंट-एंड से कॉल करना चाहिएaccess token
जब यह समाप्त होने वाला हो। लेकिन फिर मुझे चाहिएrefresh token
सामने के छोर पर, है ना?
- क्या सर्वर पर आह्वान करने के लिए कोई सत्र बनाए रखा जाना चाहिए
जैसा कि आप देख रहे हैं कि मेरे सिर में एक गड़बड़ है refresh token
. किसी अन्य अनुदान कार्यान्वयन के लिए कुछ स्पष्टीकरण या सुझाव देना बहुत अच्छा होगा।
मुझे लगता है कि बैकएंड तकनीक यहां अप्रासंगिक है, लेकिन अगर यह FOSOAuthServerBundle के साथ सिम्फनी 2 है।
उत्तर:
जवाब के लिए 0 № 1जब आप किसी OAuth सर्वर पर TOKEN एंडपॉइंट (प्रत्येक ग्रांट_टाइप के लिए संभव) को कॉल कर रहे हैं, तो आपको एक access_token लेकिन अन्य जानकारी भी मिलती है (मुझे लगता है कि यहां सभी हैं):
{
access_token: // your short-lived token
expires_in: // number of seconds before the access_token is invalid
token_type: // the type of the access_token
scope: // scopes of the access_token
refresh_token: // long-lived token to get a new access_token
}
मेरी राय में आपको ये सारी जानकारी चाहिए(हो सकता है कि गुंजाइश अप्रयुक्त हो, लेकिन अन्य सभी का उपयोग बाद में किया जाएगा)। एपीआई कॉल करने में सक्षम होने के लिए आपको एक्सेस_टोकन को बीए में स्टोर करना होगा। सेकंड के बाद, आपका access_token अब काम नहीं करेगा। आपको एक नया प्राप्त करने की आवश्यकता होगी। आप या तो उपयोगकर्ता को फिर से लॉग इन करने के लिए कह सकते हैं या रीफ्रेश_टोकन का उपयोग कर सकते हैं।
आपको OAuth सर्वर पर कॉल करना होगाTOKEN एंडपॉइंट लेकिन एक ग्रांट_टाइप के साथ: रिफ्रेश_टोकन। आपको पहले अनुरोध (अन्य जानकारी के साथ) से रीफ्रेश_टोकन प्रदान करना होगा और बदले में आपको ऊपर जैसा ही जवाब मिलेगा। वास्तव में, मुझे लगता है कि आपको यह करना होगा कि हर बार एक access_token की समय सीमा समाप्त हो जाती है। मेरी राय में, सर्वर पक्ष को सत्र या जुड़े हुए उपयोगकर्ताओं के बारे में कुछ भी पता नहीं है। यह मान्य और अमान्य access_token के बारे में जानता है।
यह ओएथ है।यदि आप हर बार रीफ्रेश नहीं करना चाहते हैं, तो आप लंबे समय तक पहुंच_टोकन (एक्सपायर_इन सेट करके) बना सकते हैं, मुझे लगता है कि यह एकमात्र समाधान है जो ओएथ संदर्भ में समझ में आता है।
क्या आपको सामान्य रूप से OAuth के बारे में कुछ स्पष्टीकरण की आवश्यकता है?