मैं OAuth2 और OpenID Connect की बेहतर समझ हासिल करने की कोशिश कर रहा हूं, इसलिए मैंने यह देखने का फैसला किया कि जब मैं अपने Google खाते के साथ StackOverflow में साइन इन करता हूं तो क्रोम के डेवलपर टूल में क्या दिखाई देता है।

साइन इन करने के लिए Google बटन पर क्लिक करने के बाद, ये 5 नेटवर्क अनुरोध किए जाते हैं:

ध्यान दें कि मैं पहले ही Google में साइन इन हूं और मैंने पहले StackOverflow को अधिकृत किया है।

1) 204 POST https://stackoverflow.com/gps/event
    Request Payload:
        ...
        properties:
            location: "users_login"
            openid_provider: "google"

2) 302 POST https://stackoverflow.com/users/login?...
    Query String Parameters:
        ssrc: head
        returnurl: https://stackoverflow.com/
    Form Data:
        email: 
        password: 
        oauth_version: 2.0
        oauth_server: https://accounts.google.com/o/oauth2/auth
        openid_username: 
        openid_identifier: 

3) 302 GET https://accounts.google.com/o/oauth2/auth?...
    Query String Parameters:
        client_id: xxxx
        scope: profile email
        redirect_uri: https://stackauth.com/auth/oauth2/google
        state: {"sid":1,"st":"xxxx","ses":"xxxx"}
        response_type: code


4) 302 GET https://stackauth.com/auth/oauth2/google?...
    Query String Parameters:
        state: {"sid":1,"st":"xxxx","ses":"xxxx"}
        code: xxxx


5) 302 GET https://stackoverflow.com/users/oauth/google?...
    Query String Parameters:
        code: xxxx
        state: {"sid":1,"st":"xxxx","ses":"xxxx"}
        s: xxxx

अनुरोध 1 से) ऐसा लगता है कि OpenID Connect का उपयोग किया जाता है। लेकिन फिर अनुरोध 3 को देखते हुए, अनुरोध किया गया दायरा scope: profile email है।

यदि OpenID Connect का वास्तव में उपयोग किया गया था तो क्या openid को दायरे में शामिल नहीं किया जाएगा? इसके बिना token एंडपॉइंट एक id_token को सही नहीं लौटाएगा?

क्या इसका मतलब यह है कि StackOverflow वास्तव में Google के साथ साइन इन करने वाले उपयोगकर्ताओं को प्रमाणित करने के लिए OpenID Connect का उपयोग नहीं कर रहा है, बल्कि इसके बजाय सादे पुराने OAuth2 का लाभ उठा रहा है?

यदि ऐसा है तो मुझे लगता है कि ओपनआईडी कनेक्ट अस्तित्व में आने से पहले सादा पुराना ओएथ 2 आमतौर पर प्रमाणीकरण (सुरक्षित तरीके से) के लिए उपयोग किया जाता था?

0
el_tigro 5 जून 2018, 21:45

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि StackOverflow Google के साथ प्रदाता के रूप में सादा OAuth 2.0 प्राधिकरण_कोड प्रवाह कर रहा है।

अनुरोध 1) StackOverflow सर्वर पर जा रहा है। इसका वास्तव में कोई मतलब नहीं है। आप देख सकते हैं कि अगर आप फेसबुक पर प्रेस करेंगे तो आपको मिलेगा openid_provider: "facebook" भले ही Facebook OpenID Connect को लागू नहीं करता है।

StackOverflow इस तरह कुछ लागू कर रहा है: https://developers.google.com/identity/sign- इन/वेब/सर्वर-साइड-फ्लो लेकिन Google लाइब्रेरी का उपयोग करने के बजाय केवल रीडायरेक्ट का उपयोग करना

OAuth 2.0 प्राधिकरण_कोड प्रवाह समझाया गया: https://aaronparecki.com/oauth-2-simplified/#web- सर्वर-ऐप्स

1
Boaz 7 जून 2018, 12:17