2009-03-18 16 views
29

क्या डब्ल्यूसीएफ आरईएसटी सेवा का पर्दाफाश करने के लिए एक साफ तरीका है जिसके लिए मूल प्रमाणीकरण की आवश्यकता है, लेकिन जहां हम उपयोगकर्ता नाम/पासवर्ड की वास्तविक सत्यापन को संभालते हैं? ऐसा लगता है कि जब आप कॉन्फ़िगरेशन में डब्ल्यूसीएफ को बताते हैं कि आप बुनियादी प्रमाणीकरण का उपयोग करना चाहते हैं, तो यह आपको आईआईएस में बुनियादी प्रमाणीकरण चालू करने के लिए मजबूर करता है और आईआईएस केवल विंडो खातों के खिलाफ मूल प्रमाणीकरण कर सकता है।विंडोज़ खातों के अलावा कुछ और करने के लिए डब्ल्यूसीएफ आरईएसटी सेवा के साथ मूल प्रमाणीकरण?

हमने पाया है कि एकमात्र हैक डब्ल्यूसीएफ से झूठ बोलना है और उसे बताएं कि सेवा पर कोई सुरक्षा नहीं है और फिर एक सामान्य IHttpModule का उपयोग करके डब्ल्यूसीएफ स्टैक के बाहर प्रमाणीकरण करें (जिसमें मालिकाना कॉन्फ़िगरेशन फ़ाइल है जो इंगित करती है कि कौन से यूआरएल हैं कौन सा प्रमाणीकरण/प्राधिकरण आवश्यकताओं)।

ऐसा लगता है कि एक बेहतर तरीका होना चाहिए। किसी के पास कोई है?

cc.ClientCredentials.UserName.UserName = ReturnUsername(); 
cc.ClientCredentials.UserName.Password = ReturnPassword(); 

या वे बाकी संदेश के मुख्य भाग में एम्बेडेड रहे हैं:

उत्तर

9

WCF बाकी योगदान पुस्तकालय इस कार्यक्षमता सक्षम बनाता है।

+3

क्या यह .NET4 के साथ काम करता है? –

+2

अच्छा सवाल। मैं अब हमारे कोड बेस को अपग्रेड कर रहा हूं इसलिए मुझे जल्द ही पता चल जाएगा। :) – hcoverlambda

+4

परियोजना अब गिटहब पर होस्ट की गई है: http://github.com/mikeobrien/WcfRestContrib –

4

उपयोगकर्ता नाम और पासवर्ड की तरह ग्राहक पर सेट किया जाता है?

तो पूर्व, आप एक कस्टम UserNamePasswordValidator उपयोग कर सकते हैं: http://msdn.microsoft.com/en-us/library/aa702565.aspx

तो बाद, आप किसी भी सुरक्षा के लिए सेवा सेट कर सकते हैं, और संदेश की सामग्री को मान्य करने के लिए एक कस्टम ServiceAuthorizationManager का उपयोग करें: http://msdn.microsoft.com/en-us/library/ms731774.aspx

आशा है कि एक या दूसरा मदद करता है! मैं नमूना कोड & कॉन्फ़िगरेशन पोस्ट करने का प्रयास करता हूं, लेकिन मैं @ घर हूं और कोड तक पहुंच नहीं है, जो सभी @ काम है।

3

यदि आप इसे आईआईएस पर होस्ट करते हैं, तो कस्टम http मॉड्यूल का उपयोग करने का तरीका है। कोड एक्सेस सुरक्षा करने के लिए आप प्रिंसिपल ओवर को डब्ल्यूसीएफ पक्ष में ला सकते हैं। HTTP Basic Authentication against Non-Windows Accounts in IIS/ASP.NET (Part 3 - Adding WCF Support) देखें। Custom HTTP Basic Authentication for ASP.NET Web Services on .NET 3.5/VS 2008 भी देखें।

यदि आप आईआईएस का उपयोग नहीं कर रहे हैं, तो आप उपयोगकर्ता नाम प्रमाणीकरण को लागू करने में सक्षम होना चाहिए। Finally! Usernames over Transport Authentication in WCF देखें।

http://github.com/mikeobrien/WcfRestContrib

यह भी आप अलग-अलग कार्यों के सुरक्षित करने के लिए अनुमति देता है:

4

Custom Basic Authentication for RESTful services देखें। पाब्लो का दृष्टिकोण समस्या को हल करने के लिए आरईएसटी स्टार्टर किट के माध्यम से प्रदान की गई इंटरसेप्टर कार्यक्षमता का उपयोग करता है। यदि आप आरईएसटी स्टार्टर किट पर निर्भर नहीं होना चाहते हैं, तो आप अपना स्वयं का सेवा होस्ट बना सकते हैं और प्रदान की गई अभिकर्ता कार्यक्षमता का उपयोग कर सकते हैं।

1

हाँ बिल्कुल एक तरीका है। आपको अपनी सेवा के लिए एक कस्टम userNamePasswordValidationMode मान कॉन्फ़िगर करने की आवश्यकता है और इसे एक ओवरराइड विधि वाले क्लास पर इंगित करें जो प्रदान किए गए प्रमाण-पत्रों का निरीक्षण और सत्यापन कर सके। एक विश्वसनीय कॉल करते समय, इन प्रमाणीकरणों को मूल प्रमाणीकरण का उपयोग करते समय अपने उचित रूप में अनुरोध हेडर में होना चाहिए। इस कस्टम विधि के साथ आप क्रेडेंशियल्स का निरीक्षण कर सकते हैं और फिर ग्राहक को आपकी सेवा के लिए प्रमाणीकृत कर सकते हैं। कोई विंडोज खाते या डोमेन की भी आवश्यकता नहीं है।

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

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

RESTful Services: Authenticating Clients Using Basic Authentication

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