5

सत्यापित करने में असमर्थ है, मैं नई वेबपी का उपयोग कर रहा हूं।किसी प्रपत्र प्रमाणीकरण टिकट को डिक्रिप्ट करने का प्रयास हमेशा डेटा

अब मुझे नहीं पता कि मैं यह सही तरीके से कर रहा हूं लेकिन मैं एक एपीआई को एक अन्य एमवीसी एप्लिकेशन पर उपयोग करने के लिए HttpResponseMessages शीर्षलेख में प्रमाणीकरण कुकी वापस करने की कोशिश कर रहा हूं।

मैं FormsAuthenticationTicket उपयोग कर रहा हूँ के रूप में मुझे लगता है कि इसकी क्या मैं अपने MVC आवेदन पर की तरह

public HttpResponseMessage Get(LoginModel model) 
    { 
     if (model.UserName == "bob") 
     { 
      // if (Membership.ValidateUser(model.UserName, model.Password)) 
      // { 
      var msg = new HttpResponseMessage(HttpStatusCode.OK); 
      var expires = DateTime.Now.AddMinutes(30); 
      var auth = new FormsAuthenticationTicket(1, model.UserName, DateTime.Now, expires, 
                model.RememberMe,"password", 
                FormsAuthentication.FormsCookiePath); 
      var cookie = new HttpCookie("user"); 
      cookie.Value = FormsAuthentication.Encrypt(auth); 
      cookie.Domain = "localhost"; 
      cookie.Expires = expires; 
      msg.Headers.Add("result",cookie.Value); 
      return msg; 
      // } 
     } 
     return new HttpResponseMessage(HttpStatusCode.Forbidden); 
     //else 
     //{ 
     // return "The user name or password provided is incorrect."; 
     //} 
    } 
अब अपना लॉगिन नियंत्रक के भीतर

का उपयोग मैं सेवा को कॉल और हैडर मैं में सेट से डेटा मूल्य प्राप्त करने की आवश्यकता एपीआई नियंत्रक।

string data = response.Headers["result"].ToString(); 
    FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(data); 

हर मैं FormsAuthentication.Decrypt चलाने की कोशिश मैं एक त्रुटि

डेटा सत्यापित करने में असमर्थ होते जा रहे हैं।

मुझे लगता है कि जब एपीआई डेटा को एन्क्रिप्ट करता है तो यह किसी प्रकार की कुंजी का उपयोग करता है जिसे वेबसाइट के बारे में पता नहीं है। क्या मैं सही हू?

क्या कोई मदद कर सकता है?

आप

+0

इस पंक्ति में 'डेटा' का मूल्य क्या है 'स्ट्रिंग डेटा = प्रतिक्रिया। हेडर [" परिणाम "]। ToString();'? – Aliostad

उत्तर

8

मैं जब एपीआई डेटा यह महत्वपूर्ण यह है कि वेबसाइट के बारे में पता नहीं है किसी तरह का का उपयोग करता है को एन्क्रिप्ट करने के लिए अपने कारण मान धन्यवाद। क्या मैं सही हू?

फॉर्म प्रमाणीकरण। एन्क्रिप्ट और डिक्रिप्ट विधियां machine key का उपयोग करती हैं। तो सुनिश्चित करें कि आपने अपने वेब एपीआई वेब एप्लिकेशन और उपभोग करने वाले एएसपी.नेट एमवीसी एप्लिकेशन दोनों के लिए एक ही कुंजी कॉन्फ़िगर की है।

आप following article पर भी एक नज़र डाल सकते हैं जो दिखाता है कि आप वेब एपीआई के साथ ओएथ 2.0 का उपयोग कैसे कर सकते हैं।

+0

कोई विचार है कि कोई त्रुटि कैसे फेंकें ताकि मैं अपनी कुकीज़ साफ़ कर सकूं और उपयोगकर्ता को अपवाद से नियंत्रक को रीडायरेक्ट कर सकूं? मेरी कुकीज़ बनी रहती है, इसलिए मैं रीडायरेक्ट लूप में फंस जाता हूं। यह तब होता है जब मैं अपनी चाबियाँ अपडेट करता हूं। वेब एपीआई रिटर्न 401 लेकिन एमवीसी लॉगिन पेज पर रीडायरेक्ट करता है, और लॉगिन पेज अनुरोध कुकी को दोबारा भेजता है जो अनधिकृत प्रतिक्रिया फेंकता है। एक दुष्चक्र में फंस गया! – Shouvik