2011-01-23 6 views
9

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

सेवा सी # होगी, उपभोक्ता कुछ भी हो सकता है (फेसबुक या आईफोन ऐप के साथ-साथ एक वेबसाइट) ताकि माइक्रोसॉफ्ट केवल समाधान ही बाहर हो।

यह कोई नई समस्या नहीं है इसलिए मुझे लगता है कि इससे निपटने के लिए कुछ मानक प्रथाएं हैं लेकिन मेरा google-fu इस पर मुझे असफल कर रहा है। सामूहिक मुझे किसी भी संसाधन के लिए इंगित कर सकते हैं? धन्यवाद।

+0

मैंने विकल्पों के लिए कहा और उन्हें मिला, लेकिन पूछताछकर्ता ने मुझे ओथ में इंगित करने का उत्तर दिया। – MarcE

उत्तर

3

मुझे लगता है कि ferequently सास वेब सेवाओं में SSL पर टोकन कुंजी द्वारा प्रमाणीकरण प्रयोग किया जाता है - हम OAuth में हमारे पिछले परियोजना में इस सरल विधि का चयन और एसएएमएल प्रोटोकॉल। शायद यह उपयोगी हो सकता है - कभी-कभी सरल समाधान चीजों को अधिक स्केलेबल और नियंत्रण में बनाते हैं।

+0

यह दिलचस्प है क्योंकि "ओथ" मेरी शब्दावली से गायब था और उसने Google संभावनाओं की दुनिया खोला! – MarcE

3

इस समान प्रश्न में जवाब का प्रयास करें:

What is the best way to handle authentication in ASP.NET MVC with a Universe database?

+1

पहला लिंक कोई जवाब नहीं है? – Phill

+0

@ फिल - क्षमा करें आप सही हैं – RichardTheKiwi

+0

मुझे यह भी नहीं लगता कि उन्हें एक कस्टम प्रदाता की आवश्यकता होगी, वह अंतर्निहित एसक्यूएल प्रदाता का उपयोग कर सकते हैं यदि वह बैकएंड के रूप में एमएस एसक्यूएल का उपयोग कर रहा है। – Andrey

4

तुम अब भी सदस्यता प्रमाणीकरण का उपयोग कर सकते हैं: एक वेब सेवा विधि Login(username, password) कि विधि मान्य उपयोगकर्ता के अंदर, है:

[WebMethod] 
public bool Login(string username, string password) 
{ 
    bool isValid = Membership.ValidateUser(username, password); 
    if (isValid) 
    { 
     FormsAuthentication.SetAuthCookie(username, true); 
     return true; 
    } 
    return false; 
} 

और है कि यह करना चाहिए - यह उस कुकी का अनुरोध के साथ और प्रत्येक विधि में यात्रा बनाएगा आप HttpContext.Current.User.IsAuthenticated देख सकते हैं।

void SomeWebMethodThatRequiresAuthentication(someparameter) 
{ 
    if (HttpContect.Current.User.IsAuthenticated) 
    { 
     ... do whatever you need - user is logged in ... 
    } 
    else 
    { 
     .... optionally let user know he is not logged in ... 
    } 
} 

मेरा मानना ​​है कि यह अलग उपभोक्ताओं कि कुकी का समर्थन क्योंकि सभी यह काम करने की जरूरत अपने वेब सर्वर पर अनुरोध के साथ प्रमाणन कुकी भेजने के लिए उपभोक्ता के लिए है के साथ काम कर सकते हैं।

+0

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

+0

एएसपी.नेट सदस्यता यूआरएल रीराइटिंग का समर्थन करती है और यूआरएल में प्रमाणीकरण टोकन रखती है, ताकि यह किसी भी उपभोक्ता के लिए काम करेगी, यहां तक ​​कि जो कुकीज़ का समर्थन नहीं करते हैं। उदाहरण के लिए: http://www.informit.com/articles/article.aspx?p=351414&seqNum=4 – Andrey

1

हम WS-Security का उपयोग करते हैं। यह एक प्रकाशित मानक है इसलिए कोई भी ग्राहक (सिद्धांत रूप में) प्रमाणीकरण प्रमाण-पत्र भेजने के लिए इसका उपयोग कर सकता है।

यहां एक और एसओ सवाल है जो डब्ल्यूएस-सिक्योरिटी का उपयोग सी # के साथ करता है।
How to use WS-Security in C#?

+0

लिंक के लिए धन्यवाद - मैं और अधिक पढ़ना देखता हूं! – MarcE

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