2008-11-15 15 views
20

मैं वेब सेवाओं और डब्ल्यूसीएफ के साथ बहुत हरा हूं, और मैं विंडोज एकीकृत प्रमाणीकरण का उपयोग कर रहा हूं - मैं सर्वर-साइड इंटरफ़ेस पर उपयोगकर्ता नाम कैसे प्राप्त करूं? मेरा मानना ​​है कि मुझे एक कस्टम व्यवहार, या शायद डब्ल्यूसीएफ सत्रों के साथ कुछ लागू करना है? कोई सुराग सुपर-आसान होगा।WCF सर्वर पक्ष से Windows उपयोगकर्ता नाम प्राप्त करें

उत्तर

9

यहाँ पर देखने का प्रयास करें सेवा कोड का एक टुकड़ा पता चलता है कि आप कैसे निकालते हैं और एक WCF सेवा के फोन करने वाले के साथ जुड़े WindowsIdentity इस्तेमाल कर सकते हैं है।

यह कोड मान रहा है कि आप अपनी कॉन्फ़िगरेशन के साथ अधिकांश डिफ़ॉल्ट स्वीकार कर रहे हैं। इसे नामित पाइप या नेट टीसीपी बाइंडिंग के साथ किसी भी समस्या के बिना काम करना चाहिए।

पी। डेमांड() यह निर्धारित करेगा कि उपयोगकर्ता अनुमति समूह समूह द्वारा निर्दिष्ट विंडोज समूह में है या नहीं।

private static void DemandManagerPermission() 
{ 
    // Verify the use has authority to proceed 
    string permissionGroup = ConfigurationManager.AppSettings["ManagerPermissionGroup"]; 
    if (string.IsNullOrEmpty(permissionGroup)) 
     throw new FaultException("Group permissions not set for access control."); 

    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); 
    var p = new PrincipalPermission(ServiceSecurityContext.Current.WindowsIdentity.Name, permissionGroup, true); 
    p.Demand(); 

} 
+1

सेवा कॉल करने वाले उपयोगकर्ता की पहचान नहीं है। पी। डेमांड मांग करेगा कि 'थ्रेड.क्यूरेंट प्रिंसिपल' निर्दिष्ट भूमिका में है और उसी उपयोगकर्ता नाम को 'ServiceSecurityContext.Current' .WindowsIdentity.Name'। – Joe

-2

क्या आपने WindowsIdentity.GetCurrent(); को आजमाया है?

+8

यह सेवा देता है कि सेवा – Cocowalla

49

ServiceSecurityContext.Current.WindowsIdentity

5

WCF सेवा फोन करने वाले उपयोगकर्ता नाम पाने के लिए:

वर callerUserName = ServiceSecurityContext.Current.WindowsIdentity.Name;

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