में दूसरे उपयोगकर्ता के लॉग मैं एक ही उत्पादन वातावरण बहुत सिर खरोंच है कि में एक मुद्दा होने वाली है।ContextSessionSecurityToken ओवरराइट जा रहा है जब
आप दो उपयोगकर्ताओं, एक है और में बी उपयोगकर्ता A लॉग, सब कुछ ठीक काम करता है। उपयोगकर्ता बी लॉग इन करता है, और उपयोगकर्ता बी के बाद लॉग इन करता है, उपयोगकर्ता ए में अब उपयोगकर्ता बी के रूप में एक ही सुरक्षा टोकन है।
हमारा डब्ल्यूआईएफ सेटअप काफी मानक है, हम टोकन पर कुछ कस्टम दावों को इंजेक्ट करते हैं, लेकिन बाकी सब कुछ मानक दिखता है जहां तक टोकन बनाया और संग्रहीत किया जा रहा है (WIF द्वारा संभाला गया)।
महसूस की तरह मैं WIF है कि मैं के साथ
अद्यतन परिचित नहीं हूँ के साथ कुछ अजीब बढ़त मामले में चल रहा है हो सकता है: दोनों ए और बी अलग मशीनों, या एक ही मशीन पर अलग ब्राउज़रों पर हो सकता है।
जब एक सेवा
if (HttpContext.Current == null)
return null;
if (HttpContext.Current.Cache == null)
return null;
if (FederatedAuthentication.SessionAuthenticationModule == null)
return null;
if (FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken == null)
return null;
var sessionToken = FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken;
if (sessionToken.ClaimsPrincipal == null)
throw new InvalidOperationException("The ClaimsPrincipal property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");
if (sessionToken.ClaimsPrincipal.Identities == null)
throw new InvalidOperationException("The ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");
if (sessionToken.ClaimsPrincipal.Identities.Count == 0)
throw new InvalidOperationException("The ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object has no identities");
if (sessionToken.ClaimsPrincipal.Identities[0] == null)
throw new InvalidOperationException("The first identity in the ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object is null");
if (sessionToken.ClaimsPrincipal.Identities[0].Claims == null)
throw new InvalidOperationException("The first identity in the ClaimsPrincipal.Identities sub-property of the FederatedAuthentication.SessionAuthenticationModule.ContextSessionSecurityToken object as a null Claims property");
return TokenUtility.GetDelegatedToken(IssuedTokenTypes.UserProfile | IssuedTokenTypes.AccountPermissions, sessionToken);
का अनुरोध अगर मैं यहाँ मैं sessionToken.ClaimsPrincipal.Identity.Name
देख सकते हैं प्रवेश करने जोड़ने हम कहाँ टोकन प्राप्त नाम यह इस बिंदु पर माना जाता है से अलग है।
आप एक पीसी पर में एक लॉग मतलब है, बी एक ही पीसी, एक ही ब्राउज़र सत्र या क्या का उपयोग करता है? – nzpcmad
साइट को दो अलग-अलग मशीनों/ब्राउज़रों से ब्राउज किया गया है, तो संभव नहीं है। टोकन साइट पर पोस्ट किए जाते हैं और एक कुकी में बने रहते हैं। उपयोगकर्ताओं के बीच साझा करने का कोई तरीका नहीं है जब तक कि आप स्थैतिक चर में डेटा संग्रहीत करने की तरह कुछ गलत तरीके से गलत नहीं करते हैं। –
@nzpcmad आप एक ही मशीन पर दो अलग-अलग ब्राउज़रों पर हो सकते हैं। आप दो अलग मशीनों पर हो सकते हैं। – jcolebrand