2012-10-03 5 views
5

मेरे पास एक एएसपीनेट वेब एप्लिकेशन है जो कई डब्ल्यूसीएफ सेवाओं को कॉल करता है। वेब ऐप www.mydomain.com पर स्थित है और सेवाएं services.mydomain.com पर हैं। वे एक ही सर्वर से होस्ट किए जाते हैं।WCF विंडोज प्रमाणीकरण स्पष्ट रूप से क्रेडेंशियल सेट किए बिना काम करता है

<binding name="WindowsSecuredBinding"> 
    <security mode="Transport"> 
    <transport clientCredentialType="Windows" /> 
    </security> 
</binding> 

और इन नए सुरक्षित अंतिमबिंदुओं उपयोग करने के लिए ग्राहक वेब अनुप्रयोग के लिए कॉन्फ़िगर:

मैं बस सेवाओं है कि परिवहन सुरक्षा (https) और Windows Authenication उपयोग करने के लिए सुरक्षित अंतिमबिंदुओं (bassicHttpBindings) जोड़ दिया है। मैं विंडोज प्रमाणीकरण को पारित करने के लिए क्लाइंट प्रमाण-पत्र सेट करने के लिए अगले चरण को वेब ऐप में कुछ कोड लिखने की उम्मीद कर रहा था। मेरे आश्चर्य के लिए, सेवा कॉल क्लाइंट प्रमाण-पत्र सेट किए बिना सफल हो रही है। मुझे लगता है कि यह उस खाते को भेजना होगा जो वेब ऐप चल रहा है लेकिन उसे सत्यापित करने के बारे में नहीं पता। अन्य परिदृश्यों में मैंने सोचा कि मैंने क्लाइंट प्रमाण-पत्रों को कोई अंतर्निहित डिफ़ॉल्ट नहीं देखा है।

  1. प्रमाणीकरण कैसे सफलता मिल रही है:

    तो मैं दो प्रश्न हैं? क्या यह उपयोगकर्ता को ऐप चलाता है, ब्राउज़र उपयोगकर्ता के प्रमाण-पत्र, कोई प्रमाण-पत्र नहीं?

  2. मैं प्रमाणीकरण प्रक्रिया को डीबग/लॉग/ट्रेस कैसे कर सकता हूं? मैं कम से कम उस उपयोगकर्ता नाम को देखना चाहता हूं जिसे प्रमाणीकृत किया जा रहा है, इसलिए मैं सुरक्षा को मान्य कर सकता हूं।
+0

विंडो-प्रमाणीकरण [केर्बेरोस] का उपयोग करता है (http://support.microsoft.com/kb/217098) आईआईआरसी। मेरा मानना ​​है कि यह वर्तमान पहचान का उपयोग करता है, लेकिन मुझे यकीन नहीं है कि यह कॉन्फ़िगर करने योग्य है या कैसे सभी छोटे विवरण काम करते हैं। –

उत्तर

3
  1. आपके वर्तमान कॉन्फ़िगरेशन आप सर्वर और ग्राहक पक्ष पर यह है के रूप में के साथ ग्राहक creditials कि इसके तहत चल रहा है भेज रहा है। चूंकि क्रेडेंशियल प्रकार विंडोज पर सेट किया गया है जो कि यदि आप किसी डोमेन या एनटीएलएम में हैं, तो यह वर्कग्रुप वातावरण है तो सुरक्षा के लिए केर्बेरोस में सुरक्षा बातचीत का कारण बनता है। (More information can be found here.)
  2. प्रमाणीकरण प्रक्रिया डीबग करने के लिए डब्ल्यूसीएफ में एक ऑडिटिंग सुविधा है जिसे सक्षम किया जा सकता है। Instructions for adding auditing are here

यहाँ लेखा परीक्षा MSDN पेज से महत्वपूर्ण भागों है:

<behaviors> 
<behavior name="myAuditBehavior"> 
    <serviceSecurityAudit auditLogLocation="Application" 
    suppressAuditFailure="false" 
    serviceAuthorizationAuditLevel="None" 
    messageAuthenticationAuditLevel="SuccessOrFailure" /> 
</behavior> 
</behaviors> 

और सेवा के लिए व्यवहार को जोड़ने:

<service type="[Your service type here]" behaviorConfiguration="myAuditBehavior"> 

एक बार ऑडिटिंग सक्षम है आप सभी प्राधिकरण गतिविधि देख सकते हैं (सफलता और विफलता अगर आप इसे इस तरह से कॉन्फ़िगर करते हैं)। इससे आपको यह सत्यापित करने की अनुमति मिलनी चाहिए कि आपकी सुरक्षा सेटअप है जिस तरह से आप इसे पसंद करेंगे।

यदि आपको एएसपी.NET वेब ऐप (जिसे प्रतिरूपण कहा जाता है) का उपयोग करने वाले उपयोगकर्ता के प्रमाण-पत्रों को पारित करने की कार्यक्षमता की आवश्यकता होती है, तो इस पृष्ठ पर एमएसडीएन दस्तावेज "Delagation and Impersonation with WCF" पर मिलता है।

+0

उत्कृष्ट जवाब। प्रतिरूपण पर छूने के लिए भी धन्यवाद। तो क्या मैं myClientBase सोचने में सही हूं। क्लाइंट क्रेडेंशियल्स पहले से ही डिफ़ॉल्ट रूप से System.Net.CredentialCache.DefaultNetworkCredentials पर सेट है या डिफ़ॉल्ट नेटवर्क प्रमाण पत्र कुछ और है? शायद मैं ऑडिटिंग का उपयोग कर अपने आप पर खोज करूंगा। – xr280xr

+0

मेरा अनुमान है कि यह ऐप पूल पहचान के प्रमाण-पत्रों पर सेट है कि आपका वेब ऐप चल रहा है (यह मानते हुए कि आप आईआईएस में होस्टिंग कर रहे हैं)।यह संभव है कि वेब साइट पहले से ही प्रतिरूपण के लिए कॉन्फ़िगर किया गया था कि डब्ल्यूसीएफ कॉल इसे विरासत में ले रहा है (लेकिन मुझे शक है)। ऑडिटिंग निश्चित रूप से जानने का एकमात्र तरीका होगा, लेकिन मुझे लगता है कि यह ऐप पूल पहचान है। –

+0

वेब ऐप साइट स्थानीय IUSR_ * खाते का उपयोग करके अनाम पहुंच की अनुमति देने के लिए कॉन्फ़िगर किया गया है। यह प्राधिकरण के लिए उस खाते का उपयोग कर रहा है जो ऐप पूल खाते से अलग है। – xr280xr

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