Jak uwierzytelnić się w aplikacji ASP.NET MVC z aplikacji konsoli
Mam aplikację konsolową, która wysyła XML do aplikacji MVC i w odpowiedzi otrzymuje inny XML. Działa doskonale, ale chcę dodać autoryzację (z oczywistych powodów).
Oto kod z aplikacji konsoli:
<code>using (var wc = new WebClient()) { return GetXmlFromBytes( wc.UploadData("URL", GetBytesFromXml(xmlToSend)) ); } </code>
A oto kod z aplikacji MVC:
<code>public ActionResult DoSomething() { XElement xml = XElement.Load(new System.IO.StreamReader(Request.InputStream)); var response = InsertDataFromXml(xml); return File(GenerateFileFromResponse, "text/xml", "result.xml"); } </code>
I to działa. Aby wdrożyć autoryzację, dodałem następujący kod:
Konsola (dodanowc.Credentials
):
<code>using (var wc = new WebClient()) { wc.Credentials = new NetworkCredential("user", "password"); return GetXmlFromBytes( wc.UploadData("URL", GetBytesFromXml(xmlToSend)) ); } </code>
Aplikacja MVC (dodano[Authorize]
):
<code>[Authorize] public ActionResult DoSomething() { XElement xml = XElement.Load(new System.IO.StreamReader(Request.InputStream)); var response = InsertDataFromXml(xml); return File(GenerateFileFromResponse, "text/xml", "result.xml"); } </code>
I to nie działa. Nie wiem, czy ta informacja jest potrzebna do rozwiązania tego problemu, ale mojaweb.config
ma następujący element:
<code><authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication> </code>
W rzeczywistości plik, który aplikacja MVC odsyła, jest kodem HTML strony logowania!
Co muszę zrobić, aby rozwiązać ten problem? Czy brakuje parametru wNetworkCredentials
? Wiem, że można go utworzyć za pomocądomain
, ale nie wiem, jaka jest domena użytkowników w aplikacji MVC.
Aby upewnić się, że: „użytkownik” i „hasło” są ważne.