जब एक क्लाइंट OAuth 2.0 एक्सेस टोकन के साथ एक संसाधन सर्वर को एक संरक्षित संसाधन प्राप्त करने के लिए कहता है, तो यह सर्वर टोकन को कैसे मान्य करता है? OAuth 2.0 ताज़ा टोकन प्रोटोकॉल?
जब एक क्लाइंट OAuth 2.0 एक्सेस टोकन के साथ एक संसाधन सर्वर को एक संरक्षित संसाधन प्राप्त करने के लिए कहता है, तो यह सर्वर टोकन को कैसे मान्य करता है? OAuth 2.0 ताज़ा टोकन प्रोटोकॉल?
जवाबों:
अद्यतन नवंबर 2015: नीचे हंस जेड के अनुसार - यह अब वास्तव में आरएफसी 7662 के हिस्से के रूप में परिभाषित किया गया है ।
मूल उत्तर: OAuth 2.0 कल्पना ( RFC 6749 ) टोकन (AT) सत्यापन तक पहुँच के लिए संसाधन सर्वर (RS) और प्राधिकरण सर्वर (AS) के बीच की बातचीत को स्पष्ट रूप से परिभाषित नहीं करता है। यह वास्तव में एएस के टोकन प्रारूप / रणनीति पर निर्भर करता है - कुछ टोकन स्व-निहित होते हैं (जैसे JSON वेब टोकन ) जबकि अन्य सत्र कुकी के समान हो सकते हैं, क्योंकि वे एएस में वापस सर्वर साइड रखी गई जानकारी को संदर्भित करते हैं।
हुई है कुछ चर्चा एक रुपये पर सत्यापन के लिए के रूप में के साथ संवाद करने के लिए एक मानक तरीका बनाने के बारे में OAuth कार्य समूह में। : मेरी कंपनी (पिंग पहचान) हमारे वाणिज्यिक OAuth के रूप में (PingFederate) के लिए ऐसे ही एक दृष्टिकोण के साथ आ गया https://support.pingidentity.com/s/document-item?bundleId=pingfederate-93&topicId=lzn1564003025072.html#lzn1564003025072__section_N10578_N1002A_N10001 । यह इसके लिए REST आधारित इंटरैक्शन का उपयोग करता है जो OAuth 2.0 का बहुत पूरक है।
निवेदन:
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg
जवाब:
{
"audience":"8819981768.apps.googleusercontent.com",
"user_id":"123456789",
"scope":"https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
"expires_in":436
}
Microsoft - Oauth2 एक प्राधिकरण की जाँच करें
गिथुब - Oauth2 एक प्राधिकरण की जाँच करें
निवेदन:
GET /applications/:client_id/tokens/:access_token
जवाब:
{
"id": 1,
"url": "https://api.github.com/authorizations/1",
"scopes": [
"public_repo"
],
"token": "abc123",
"app": {
"url": "http://my-github-app.com",
"name": "my github app",
"client_id": "abcde12345fghij67890"
},
"note": "optional note",
"note_url": "http://optional/note/url",
"updated_at": "2011-09-06T20:39:23Z",
"created_at": "2011-09-06T17:26:27Z",
"user": {
"login": "octocat",
"id": 1,
"avatar_url": "https://github.com/images/error/octocat_happy.gif",
"gravatar_id": "somehexcode",
"url": "https://api.github.com/users/octocat"
}
}
अमेज़न के साथ लॉगिन - डेवलपर गाइड (दिसंबर 2015, पृष्ठ 21)
निवेदन :
https://api.amazon.com/auth/O2/tokeninfo?access_token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR...
प्रतिक्रिया:
HTTP/l.l 200 OK
Date: Fri, 3l May 20l3 23:22:l0 GMT
x-amzn-RequestId: eb5be423-ca48-lle2-84ad-5775f45l4b09
Content-Type: application/json
Content-Length: 247
{
"iss":"https://www.amazon.com",
"user_id": "amznl.account.K2LI23KL2LK2",
"aud": "amznl.oa2-client.ASFWDFBRN",
"app_id": "amznl.application.436457DFHDH",
"exp": 3597,
"iat": l3ll280970
}
@ टीएसटीटी के उत्तर पर एक अपडेट: टोकन सत्यापन के लिए संसाधन सर्वर और प्राधिकरण सर्वर के बीच इंटरफ़ेस को अक्टूबर 2015 में IETF RFC 7662 में मानकीकृत किया गया था, देखें: https://tools.ietf.org/html/rfn7662 । एक नमूना सत्यापन कॉल की तरह दिखेगा:
POST /introspect HTTP/1.1
Host: server.example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer 23410913-abewfq.123483
token=2YotnFZFEjr1zCsicMWpAA
और एक नमूना प्रतिक्रिया:
HTTP/1.1 200 OK
Content-Type: application/json
{
"active": true,
"client_id": "l238j323ds-23ij4",
"username": "jdoe",
"scope": "read write dolphin",
"sub": "Z5O3upPC88QrAjx00dis",
"aud": "https://protected.example.net/resource",
"iss": "https://server.example.com/",
"exp": 1419356238,
"iat": 1419350238,
"extension_field": "twenty-seven"
}
निश्चित रूप से विक्रेताओं और उत्पादों द्वारा गोद लेने के समय के साथ होना होगा।
scope
क्वेरी पैरामीटर के साथ होता है, जिसके मान में स्कोप की एक अलग-अलग सूची होती है
OAuth 2.0 युक्ति भाग को परिभाषित नहीं करता है। लेकिन कुछ विकल्प हो सकते हैं:
जब Authz Header में रिसोर्स सर्वर को टोकन मिलता है तो वह टोकन को मान्य करने के लिए Authz सर्वर पर मान्य / introspect API को कॉल करता है। यहां Authz सर्वर डीबी स्टोर का उपयोग करने या हस्ताक्षर और कुछ विशेषताओं का सत्यापन करने से इसे वैध कर सकता है। प्रतिक्रिया के भाग के रूप में, यह टोकन को डिकोड करता है और शेष समाप्ति समय के साथ टोकन के वास्तविक डेटा को भेजता है।
Authz Server निजी कुंजी का उपयोग करके टोकन को संलग्न / हस्ताक्षर कर सकता है और फिर publickey / Cert को संसाधन सर्वर को दिया जा सकता है। जब संसाधन सर्वर को टोकन मिलता है, तो वह टोकन को सत्यापित करने के लिए या तो हस्ताक्षर को रद्द / सत्यापित करता है। सामग्री को बाहर ले जाता है और टोकन को संसाधित करता है। यह तब या तो पहुंच प्रदान कर सकता है या अस्वीकार कर सकता है।
OAuth v2 चश्मा इंगित करता है:
टोकन विशेषताओं तक पहुंच और संरक्षित संसाधनों तक पहुंचने के लिए उपयोग किए जाने वाले तरीके इस विनिर्देश के दायरे से परे हैं और साथी विनिर्देशों द्वारा परिभाषित किए गए हैं।
मेरे प्राधिकरण सर्वर में एक webservice (SOAP) समापन बिंदु है जो संसाधन सर्वर को यह जानने की अनुमति देता है कि access_token वैध है या नहीं।