मैं WPP और Winforms ऐप्स में समूह सदस्यता की जांच करने के लिए WindowsPrincipal's IsInRole विधि का उपयोग कर रहा हूं। मैं एक पहचान टोकन उत्पन्न कर रहा हूं जो कि किसी भी एडी उपयोगकर्ता के लिए हो सकता है (जरूरी नहीं कि वह उपयोगकर्ता जो वास्तव में कंप्यूटर में लॉग इन हो - जो मैं कर रहा हूं उसके आधार पर मैं जरूरी प्रमाणीकरण नहीं करता हूं, मैं केवल बुनियादी सूचना स्तर टोकन का उपयोग करता हूं (मुझे लगता है कि इसके लिए उचित नाम "पहचान टोकन" है)IsInRole नई सुरक्षा टोकन प्राप्त कर रहा है
पहली बार यह कोड किसी विशेष कंप्यूटर पर चलाया जाता है ऑपरेटिंग सिस्टम निर्दिष्ट उपयोगकर्ता के लिए पहचान टोकन उत्पन्न करता है। उस टोकन का उपयोग IsInRole फ़ंक्शन द्वारा किया जाता है समूह सदस्यता को मान्य करने के लिए। यह तेज़ है इसलिए मुझे यह वाकई पसंद है। हालांकि, WindowsIdentity/WindowsPrincipal को एक नया बनाने के बजाय मौजूदा टोकन को संदर्भित करने के बाद की कॉल। एकमात्र तरीका मुझे पता है कि टोकन को कैसे अपडेट करना है, से लॉग आउट करना है कंप्यूटर या रीबूट (जो टोकन कैश को साफ़ करता है)। क्या किसी को कैश किए गए पहचान टोकन को रीसेट करने का बेहतर तरीका पता है?
उदाहरण कोड सी #:
Using System.Security.Principal;
WindowsIdentity impersonationLevelIdentity = new WindowsIdentity("Some_UserID_That_Isn't_Me", null);
WindowsPrincipal identityWindowsPrincipal = new WindowsPrincipal(impersonationLevelIdentity);
If (identityWindowsPrincipal.IsInRole("AN_AD_GROUP")) { ...
वीबी:
Imports System.Security.Principal
Dim impersonationLevelIdentity = New WindowsIdentity("Some_UserID_That_Isn't_Me", Nothing)
Dim identityWindowsPrincipal = New WindowsPrincipal(impersonationLevelIdentity)
if identityWindowsPrincipal.IsInRole("AN_AD_GROUP") then...
दुर्भाग्यवश इसका कोई प्रभाव नहीं पड़ता है। इसके व्यवहार से मुझे लगता है कि सुरक्षा टोकन ऑपरेटिंग सिस्टम द्वारा संग्रहीत किया जा रहा है और WindowsPrinciple मूल रूप से उस ऑब्जेक्ट के लिए एक सूचक है। (विंडोज़ शिष्य के पास कॉल करने के लिए कोई विनाशक नहीं है) इस प्रकार यह आवेदन के निष्पादन के बीच बनी हुई है। इच्छा है कि मैं जानता था कि कैश को कैसे फेंकना है। – Jeff
बाहर निकलता है मैं गलत था। यह कैशिंग है, लेकिन मुझे यकीन नहीं है कि यह ओएस पर है - यह एडी पक्ष पर हो सकता है। आखिरकार जब मैं एक नई पहचान बनाता हूंविंडोज प्रिंसिपल इसे अद्यतन (सही) समूह सदस्यता प्राप्त करता है। – Jeff
उस स्थिति में शायद एडी से पूछे जाने पर क्वेरी एडी को छोड़कर प्रोग्रामेटिक रूप से उपलब्ध समाधान नहीं है, जब आप एडी पूछते हैं तो आपको अपडेट किए गए परिणाम मिलते हैं - इन सुरक्षा टोकन के विपरीत जो हमेशा अद्यतित नहीं होते हैं। दुर्भाग्यवश, एडी पूछताछ धीमी है - कम से कम हमारे पर्यावरण में। – Jeff