System.Security.Principal.WindowsIdentity
है यथोचित से सुरक्षित हैक होने ऐसी है कि एक उदाहरण मैं Thread.CurrentPrincipal
के Identity
या WindowsIdentity.GetCurrent()
है जो IsAuthenticated
के लिए true
मेरी विधानसभा गलत पहचान जानकारी देता है से मिल सकता है? कुछ भी नहीं, ज़ाहिर है, पूरी तरह से छेड़छाड़ का सबूत है, लेकिन माइक्रोसॉफ्ट की प्रतिबद्धता और निर्भरता को देखते हुए, मुझे उम्मीद है कि इस तरह की महत्वपूर्ण एपीआई लॉक डाउन हार्ड और साथ छेड़छाड़ करना मुश्किल होगा। क्या यह मेरे हिस्से पर मान्य धारणा है?क्या यह सिस्टम का उपयोग है। सुरक्षा। प्रिंसिपल। WindowsIdentity उचित रूप से सुरक्षित है?
मेरे यहाँ लक्ष्य उचित सर्वोत्तम प्रथाओं मेरी विधानसभा में एसएसओ प्रदान करना है। यदि विंडोज़ के साथ समझौता किया गया है, तो यह मेरे नियंत्रण से बाहर है, लेकिन अगर (उदाहरण के लिए) यह मेरी असेंबली से जुड़ी एक ऐप के लिए एक सीधा जानकारी है जो मुझे झूठी सूचना खिलाती है, तो यह मेरे लिए उचित परिश्रम करने में असफल रहने के लिए होगा। यह मेरे लिए अज्ञानता का एक बड़ा क्षेत्र है।
स्पष्ट है कि, मैं कठिन जानकारी के लिए देख रहा हूँ, नहीं बंद कफ राय। इसलिए, प्रकाशित किए गए शोषण, या WindowsIdentity
कन्स्ट्रक्टर का एक ऐसे तरीके से प्रदर्शित किया गया जो मेरे कोड, आदि को चालित करेगा या "यह एक वैध धारणा है" पक्ष पर, ठोस लेख इसे समर्थन दे रहा है, ज्ञात उपयोगों पर निर्भर करता है, आदि। उन्हें बहुत भाग्य नहीं मिला, लेकिन मैंने विभाजनकर्ता के तहत अब तक जो पाया है उसे शामिल किया है।
यहाँ कैसे मैं उपयोग करने का इरादा है WindowsIdentity
:
using System.Security.Principal;
using System.Threading;
// ...
// I only want Windows-authenticated users
WindowsIdentity identity = Thread.CurrentPrincipal == null
? null
: Thread.CurrentPrincipal.Identity as WindowsIdentity;
SecurityIdentifier sid;
// I can't imagine how an authenticated account would be anonymous, but...
if (identity != null && identity.IsAuthenticated && !identity.IsAnonymous) {
// SSO success from thread identity
sid = identity.User;
// ...check that that SID is allowed to use our system...
} else {
identity = WindowsIdentity.GetCurrent();
if (identity != null && identity.IsAuthenticated && !identity.IsAnonymous) {
// SSO success from current Windows user
sid = identity.User;
// ...check that that SID is allowed to use our system...
} else {
// SSO fail
}
}
यह एक DLL विधानसभा — उदासी हम नेट पर अटक कर रहे हैं में है 3.5 — कि संसाधनों से प्रतिबंधित किया जा सकता करने के लिए एक सार्वजनिक एपीआई प्रदान करता है प्रयोगकर्ता के अधिकार। यह डेस्कटॉप ऐप्लिकेशन में उपयोग किया जा सकता है, या Windows प्रमाणीकरण के साथ एक ASP.Net आईआईएस अनुप्रयोग में (ASP.Net जब विंडोज प्रमाणन का उपयोग कर Thread.CurrentPrincipal.Identity
पर एक WindowsIdentity
उदाहरण सेट, हम आईआईएस प्रमाणन वर्तमान के अन्य प्रकार का समर्थन नहीं करते)।
मैं यथोचित इस तरह प्रमाणीकृत होने का दावा उन स्रोतों से एक WindowsIdentity
उदाहरण से एक सिड पर भरोसा कर सकते हैं?
यह आश्चर्य है कि अगर ठीक था मेरे लिए नहीं होती है (DOH!) तक this question उपयोगकर्ता lc. में एक चिंता का विषय है कि विधानसभा है कि यह और के साथ जुड़ा हुआ एक दुर्भावनापूर्ण एप्लिकेशन द्वारा धोखा दिया जा रहा करने के लिए अतिसंवेदनशील हो सकता है उठाया " उस जानकारी को फिक्र किया गया। उनके पास कोई विशिष्ट सबूत नहीं था कि यह क्यों महत्वपूर्ण चिंता हो सकती है, हालांकि, यह सवाल है।
क्या (छोटे) मैं अब तक मिल गया है:
This answer दावा
आप भरोसा कर सकते हैं बनाता है कि वर्तमान
WindowsIdentity
यह कौन कहता है, यह है अब तक क्योंकि आप अपने आवेदन में किसी भी दिए गए डेटा पर भरोसा कर सकते हैं।पुस्तक Hacking the Code दावों ASP.Net एक
WindowsIdentity
की आवश्यकता है कि जब फ़ाइल authorizaton चेकिंग, अगर सच कह रही है माइक्रोसॉफ्ट, कम से कम, यह काफी अच्छा समझता है के लिए एक काफी ठोस आधार की तरह लगता है जो कर के लिए एक अनुरोध के साथ जुड़े होने ।मैं अपने कोड में
WindowsIdentity
जानकारी का उपयोग करके खुशी से लोगों के कई उदाहरण पा सकते हैं, लेकिन उनमें से अधिकतर सवाल पूछते हैं कि वे सुरक्षित हैं या नहीं। वहाँ एक निहितार्थ, लेकिन ...
आप किस संदर्भ में यह पूछ रहे हैं? आप एएसपी.नेट और डेस्कटॉप ऐप दोनों के बारे में बात कर रहे हैं। यह स्पष्ट हो सकता है, लेकिन ["पनडुब्बी" प्रणाली पर चलते समय, सभी दांव बंद हो जाते हैं - एक दुर्भावनापूर्ण उपयोगकर्ता आपकी प्रक्रिया में इंजेक्ट और संशोधित कर सकता है जिस तरह से वे चाहते हैं] (http://stackoverflow.com/questions/8357469/ कैसे-कर सकते हैं-ए-रक्षा-मेरी-निजी-funcs-के खिलाफ प्रतिबिंब-क्रियान्वित करने)। – CodeCaster
@ कोडकस्टर: यदि विंडोज़ स्वयं ठीक से समझौता किया गया है, तो यह मेरे नियंत्रण से बाहर है। लेकिन अगर (उदाहरण के लिए) एक ऐप सिर्फ 'विंडोज़ इडेंटिटी' इंस्टेंस बना सकता है, तो इसे वर्तमान थ्रेड पर असाइन करें, और फिर मेरी असेंबली को कॉल करें और मुझे विश्वास करें कि वे किसी ऐसे व्यक्ति हैं जो वे नहीं हैं, जो मेरे कारण असफल रहेगा लगन। असल में, मैं उचित सर्वोत्तम अभ्यास एसएसओ प्राप्त करने की कोशिश कर रहा हूं। मैंने सवाल नहीं किया कि क्या मैं ऊपर दिए गए एपीआई पर भरोसा कर सकता हूं जब तक कि उस उपयोगकर्ता ने इसे मेरे अन्य प्रश्न पर ध्वजांकित नहीं किया (वह सिर्फ पागल हो सकता है), और फिर मुझे जो पता नहीं है उसके बारे में चिंतित हो गया, जो इस क्षेत्र में है बहुत। :-) –