2016-11-10 19 views
6

हम अपने उपयोगकर्ताओं को प्रमाणित करने के लिए Azure B2C का उपयोग कर रहे हैं जो ठीक काम कर रहा है। साइनअप के बाद हम अपने उपयोगकर्ताओं को कुछ कस्टम दावे जोड़ते हैं जिन्हें ग्राफ़ एपीआई का उपयोग करके बी 2 सी पोर्टल में "उपयोगकर्ता विशेषताओं" के रूप में परिभाषित किया गया था। जब मैं पोर्टल में लॉग इन करता हूं तो मैं देख सकता हूं कि ये मान हमारी कॉल द्वारा निर्धारित किए गए हैं, क्योंकि कुछ मानक दावा मान हैं (यानी हम दिए गए नाम और अंतिम नाम मानों को जोड़कर प्रदर्शन नाम भी सेट करते हैं)।Azure सक्रिय निर्देशिका प्रमाणीकरण सेवा को अद्यतन दावों के साथ id_token को फिर से जारी करने के लिए कैसे मजबूर किया जा सकता है?

हमारे पास यह मुद्दा यह है कि इन मानों के सेट होने के बाद, वे प्रमाणीकृत एंडपॉइंट्स तक पहुंच टोकन भेजकर पुनर्प्राप्त टोकन में प्रकट नहीं होते हैं जब तक उपयोगकर्ता लॉग आउट नहीं होता है और फिर से वापस आ जाता है (जो स्पष्ट रूप से एक सुंदर है साइनअप के बाद भयानक उपयोगकर्ता अनुभव)। ऐसा लगता है कि जब उपयोगकर्ता बनाया जाता है तो मूल id_token को कैश किया जाता है और इसके बदले में वापस किया जा रहा है।

यह समझ में नहीं आता है, क्योंकि यह किसी एप्लिकेशन में लॉग इन करते समय उपयोगकर्ता को अपनी प्रोफ़ाइल (दावों के मूल्य) को अपडेट करने के लिए पूरी तरह से समझदार लगता है और उन परिवर्तनों के लिए तुरंत पुनः प्रमाणीकरण की आवश्यकता के बिना प्रभावित होने के लिए?

कोई बता सकता है कि सर्वर पर कैश किए गए id_token को समाप्त करने के लिए कैसे संभव है ताकि जब हम किसी एक्सेस टोकन का उपयोग करके id_token का अनुरोध करते हैं, तो id_token में सबसे अद्यतित दावों के मूल्य होते हैं?

उत्तर

1

ठीक तो प्रतिक्रिया की प्रतीक्षा करने के लगभग एक महीने के बाद, आधिकारिक लाइन है:

"उत्पाद समूह की पहचान रोडमैप पर है कि यह भी है कि हम अभी भी एक अंतिम तिथि उस में होना चाहिए की जरूरत नहीं है कुछ महीने।"

तो मूल रूप से उन्होंने स्वीकार नहीं किया है कि यह एक बग है और वे यह नहीं बता सकते कि यह परिदृश्य कब समर्थित होगा। ईमानदार होने के लिए समर्थन का बहुत खराब स्तर।

+0

मैं जो करने की कोशिश कर रहा हूं और उसके आस-पास की निराशाओं पर और विचार: http://www.rndthoughts.co.uk/2017/02/10/azure-active-directory-claims-extensions-issues-and -identical-ईमेल / – RNDThoughts

4

मुद्दा हम कर रहे हैं कि उसके बाद इन मूल्यों को स्थापित कर रहे हैं, वे जब तक उपयोगकर्ता लॉग आउट और फिर से वापस में है टोकन प्रमाणित अंतिम बिंदुओं को पहुँच टोकन भेज कर लिया गया में दिखाई नहीं देते हैं (जो स्पष्ट रूप से है साइनअप के बाद एक बहुत भयानक उपयोगकर्ता अनुभव)।

क्या आप id_token को प्राप्त करने के तरीके के बारे में अनुरोध विवरण दिखाएंगे?

1:

अपने परीक्षण के आधार पर, मैं अद्यतन दावा नीचे दिए गए चरणों की तरह सफल साथ id_token प्राप्त कर सकते हैं। साइन-इन एक वेब ऐप

2। DisplayName अद्यतन नीचे की तरह Azure AD ग्राफ़ का उपयोग कर:

POST: https://graph.windows.net/xxxx.onmicrosoft.com/users/{userId}?api-version=1.6 
{ 
    "displayName":"newValue" 
} 

3. फिर से अनुरोध OAuth2.0 प्राधिकरण endpoint से id_token साइन-आउट के बिना HTTP अनुरोध का उपयोग/साइन-इन (आप भी सटीक कैप्चर कर सकते हैं जब आप ऐप में साइन-इन करते हैं तो फिडलर का उपयोग करने का अनुरोध करें)

GET:https://login.microsoftonline.com/xxxx.onmicrosoft.com/oauth2/authorize?client_id={clientId}&redirect_uri={redirectURL}&response_type=id_token&scope=email+openid&response_mode=query&nonce=HWUavSky1PksCJC5Q0xHsw%3d%3d&nux=1&nca=1&domain_hint={XXXX.onmicrosoft.com} 

4। नए आईडी_टोकन में अद्यतन दावा मूल्य दिखाए गए

इस समस्या को कम करने के लिए, आप देख सकते हैं कि आपके ऐप में id_token के लिए कैश है या नहीं।

+0

क्या आप थोड़ा बेहतर समझा सकते हैं? बिंदु 3 में आप प्राधिकृत एंडपॉइंट को कॉल कर रहे हैं लेकिन आप यह निर्दिष्ट नहीं करते कि सर्वर कैसे जानता है कि आपने पहले से ही प्रमाणित किया है और इस बिंदु पर आपकी पहचान है।क्या ब्राउजर हेडर में प्रमाणीकरण टोकन को फिर से भेज रहा है? – RNDThoughts

+0

id_token [ओपनआईडी कनेक्ट] (https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-openid-connect- पर आधारित टोकन एंडपॉइंट के बजाय प्राधिकरण समापन बिंदु से जारी किया गया है- कोड /)। और चूंकि ब्राउज़र में Azure AD के लिए कुकी है क्योंकि मैंने चरण 1 में वेब ऐप में साइन-इन किया है, इसलिए मैं id_token को फिर से प्रमाणित किए बिना सीधे प्राप्त कर सकता हूं। क्या मैंने गलत समझा? –

+0

फी, हम इन कॉल को Xamarin Auth घटक का उपयोग करके कर रहे हैं ताकि वे ब्राउज़र के माध्यम से नहीं बने लेकिन सीधे HttpWebRequest का उपयोग कर रहे हों। जब हम आपके सुझाए गए अनुरोध को इस तरीके से करने का प्रयास करते हैं, तो हमें क्लाइंट के बारे में एक त्रुटि संदेश मिलता है जो जावास्क्रिप्ट का समर्थन नहीं करता है। इस अनुरोध को करते समय हमने शीर्षलेख में टोकन डेटा जोड़ा है लेकिन हमें लॉगिन पृष्ठ पर रीडायरेक्ट किया गया है। – RNDThoughts

संबंधित मुद्दे

 संबंधित मुद्दे