2017-04-03 8 views
6

मैं प्रवेश के लिए डिफ़ॉल्ट कार्यान्वयन का उपयोग करता है अपने वेब एपीआई साइट के लिए एक AccountController है:विरोधी जालसाजी टोकन वेब एपीआई 2

// POST: /Account/Login 
[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 

    // This doesn't count login failures towards account lockout 
    // To enable password failures to trigger account lockout, change to shouldLockout: true 
    var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
    switch (result) 
    { 
     case SignInStatus.Success: 
      return RedirectToLocal(returnUrl); 
     case SignInStatus.LockedOut: 
      return View("Lockout"); 
     case SignInStatus.RequiresVerification: 
      return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); 
     case SignInStatus.Failure: 
     default: 
      ModelState.AddModelError("", "Invalid login attempt."); 
      return View(model); 
    } 
} 

यह वेब के लिए ठीक काम करता है, लेकिन अगर मैं एक ग्राहक का उपयोग कर रहा UWP या Xamarin जैसे ऐप यह एक मुद्दा बन जाता है यदि मैं WebView का उपयोग किए बिना लॉगिन करना चाहता हूं क्योंकि ऐसा लगता है कि Web Api वेब पर जोड़ा गया है क्योंकि यह दृश्य में उत्पन्न anti-forgery टोकन पर निर्भर करता है और सबमिट पर वापस पोस्ट किया जाता है। आइए मान लें कि मैं चाहता हूं कि क्लाइंट ऐप केवल टेक्स्टबॉक्स का उपयोग करे और लॉगिन के लिए एक सबमिट बटन जैसा कि मैं देखता हूं। वे आमतौर पर WebView पॉप अप नहीं करते हैं।

एकमात्र तरीका बनाने का एकमात्र समाधान है जो उपयोगकर्ता में विरोधी जालसाजी टोकन के बिना लॉग करता है? यह थोड़ा गन्दा लगता है और डीआरवाई सिद्धांतों का पालन नहीं करता है, संभावित सुरक्षा जोखिम का उल्लेख नहीं करना।

+2

प्रवेश पृष्ठ का मिलता है और टोकन हड़पने, तो टोकन मिला वापस भेजने के लिए सुनिश्चित किया जा रहा है, प्रवेश पृष्ठ पर अपनी पोस्ट करते हैं। –

उत्तर

1

इसका उत्तर क्लाइंट एक्सेस के लिए अनुमति देने के लिए/टोकन एंडपॉइंट पर पोस्ट करके और एप्लिकेशनऑथप्रोवाइडर को ओवरराइड करके पूरी तरह से जालसाजी टोकन को बाईपास करना था। जानकारी के लिए इस stackexchange देखें:

WebAPI [Authorize] returning error when logged in

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