पर कॉल प्रमाणित करें मेरे पास एक एन-टियर ऐप है जो निम्नानुसार बनाया गया है:
आईआईएस 7 में सर्वर की तरफ एक एएसपी.Net एप्लिकेशन बैठा है जो विधियों पर खुलासा करता है डब्ल्यूसीएफ सेवा। वे विधियां ईएफ 4 का उपयोग कर डीबी से बात करती हैं। सिल्वरलाइट 4.0 में लिखे गए ग्राहक डब्ल्यूसीएफ सेवा पर विधियों को बुला रहे हैं।एन-टियर ऐप में डब्ल्यूसीएफ और सिल्वरलाइट 4.0: सेवा
WCF सेवा इस विधि को उजागर करता है:
[OperationContract]
void DeleteItem(int i_ItemId);
मैं WCF सेवाओं seuring के लिए नया हूँ, लेकिन मुझे लगता है कि इन अगले टिप्पणियों सच (मुझे ठीक कर लें मैं गलत हूँ) कर रहे हैं:
1) अगर मैं इस विधि/सेवा को छोड़ देता हूं, कोई भी जो जानता है कि मेरी सेवा http://www.mysite.com/myservice.svc पर बैठी है, केवल विजुअलस्टूडियो खोल सकता है, "सेवा संदर्भ जोड़ें" खोलें और DeleteItem() पर कॉल करना प्रारंभ करें।
2) यदि मैक्स एंडपॉइंट को हटाकर उपर्युक्त हल करने का प्रयास करता हूं, तो सेवा के लिए कॉल अभी भी कुछ मैन्युअल कोडिंग का उपयोग करके किया जा सकता है।
तो उन दो समस्याओं को हल करने का प्रयास करना मैंने डब्ल्यूसीएफ में कुछ अंतर्निहित सुरक्षा सुविधाओं के बारे में सीखना शुरू किया। शीघ्रता से अवलोकन करने के बाद मैं समझ मैं निम्नलिखित बाध्यकारी विन्यास का उपयोग कर सकते हैं, जिससे कि एक उपयोगकर्ता नाम और पासवर्ड सेवा के लिए कॉल करने के लिए की जरूरत है:
<wsHttpBinding>
<binding name="RequestUserName" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
इस समाधान को अपनाने के लिए कोशिश कर रहा है, पहली बात यह है कि मेरे दिमाग में आया था : जब कोई उपयोगकर्ता क्लाइंट में लॉग इन करता है, तो ग्राहक डब्ल्यूसीएफ कॉल के लिए क्रेडेंशियल के रूप में उपयोगकर्ता का नाम और पासवर्ड उपयोग करता है। सर्वर-साइड पर, उन प्रमाणपत्रों को डीबी के खिलाफ मान्य किया जाता है।
अब समस्या यह है कि, ये प्रमाण-पत्र (उपयोगकर्ता नाम और पासवर्ड) निश्चित रूप से उपयोगकर्ता को ज्ञात हैं, इसलिए वह केवल उन तरीकों से DeleteItem() को कॉल करने के लिए उनका उपयोग कर सकते हैं।
1) इसके बजाय प्रमाणिकता के रूप में उपयोगकर्ता नाम और पासवर्ड का उपयोग करते हुए, मैं ग्राहक में एक हार्ड-कोडेड कुंजी का उपयोग करेगा:
यहाँ से मैं दो समाधान के साथ आया था। एक्सएपी के अंदर डीएल के स्कैम्बलिंग से किसी को इस कुंजी को प्राप्त करने से रोका जा सकता है।
2) जब कोई उपयोगकर्ता क्लाइंट में लॉग इन करता है, तो सर्वर किसी प्रकार का एक अस्थायी टोकन (GUID या कुछ) भेजता है, जिसे क्लाइंट संचार के इस सत्र के दौरान अपने कॉल प्रमाणित करने के लिए उपयोग कर सकता है (मान लीजिए, उपयोगकर्ता तक ग्राहक बंद कर देता है)।
मेरा प्रश्न हैं:
क्या सुरक्षा स्तर है कि पहले समाधान प्रदान करता है और कितना मुश्किल आप यह दरार करने में काम करने की ज़रूरत है?
यदि पहला समाधान क्रैक करने के लिए बहुत छोटा है, तो क्या दूसरे समाधान में उल्लेख किए गए टोकन सिस्टम का प्रबंधन करने के लिए डब्ल्यूसीएफ में एक अंतर्निहित तरीका है?
अन्य समाधान जो दायरे को पैर कर सकते हैं उनका स्वागत है।
मैंने कभी भी फॉर्म प्रमाणीकरण का उपयोग नहीं किया है। मुझे पता है कि मैं अपनी डब्ल्यूसीएफ सेवा में कॉल सुरक्षित करना चाहता हूं। मैं उस बाध्यकारी विन्यास का उपयोग कर ऐसा कर सकता हूं जिसका मैंने उल्लेख किया था। क्या आप यह बताने की कोशिश कर सकते हैं कि मैं आपके समाधान को कैसे अपना सकता हूं। –
यह डब्ल्यूसीएफ कॉल के लिए केवल एक, हार्डकोडेड उपयोगकर्ता नाम का उपयोग किए बिना डब्ल्यूसीएफ और पूरे ऐप को सामान्य रूप से प्रमाणीकृत करने के लिए आपके उपयोगकर्ता स्टोर का उपयोग करने का एक तरीका है। अब आप उपयोगकर्ताओं को प्रमाणीकृत कैसे कर रहे हैं? –
अभी मेरे पास कोई प्रमाणीकरण प्रणाली नहीं है। उपयोगकर्ता की पहचान के संबंध में केवल एक चीज लॉग-इन पेज में उपयोगकर्ता नाम और पासवर्ड पूछ रही है, और बदले में उपयोगकर्ता के विशिष्ट डेटा को प्रदर्शित करती है। क्या आप विस्तार से बता सकते हैं कि मैंने आपके समाधान का उपयोग डब्ल्यूसीएफ बाध्यकारी के साथ कैसे किया है? –