Como autenticar em um aplicativo ASP.NET MVC a partir de um aplicativo de console
Eu tenho um aplicativo de console que envia um XML para um aplicativo MVC e recebe outro XML como uma resposta. Funciona perfeitamente, mas quero adicionar autorização (por razões óbvias).
Aqui está o código do aplicativo de console:
<code>using (var wc = new WebClient()) { return GetXmlFromBytes( wc.UploadData("URL", GetBytesFromXml(xmlToSend)) ); } </code>
E aqui está o código do aplicativo 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>
E isso funciona. Então, para implementar a autorização, adicionei o seguinte código:
Console (adicionado owc.Credentials
):
<code>using (var wc = new WebClient()) { wc.Credentials = new NetworkCredential("user", "password"); return GetXmlFromBytes( wc.UploadData("URL", GetBytesFromXml(xmlToSend)) ); } </code>
Aplicação MVC (adicionou o[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>
E isso não funciona. Eu não sei se esta informação é necessária para resolver isso, mas meuweb.config
tem o seguinte item:
<code><authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication> </code>
Na verdade, o arquivo que o aplicativo MVC envia de volta é o HTML da página Logon!
O que tenho que fazer para resolver isso? Algum parâmetro está faltando noNetworkCredentials
? Eu sei que pode ser instanciado com umdomain
, mas eu não sei qual é o domínio dos usuários no aplicativo MVC.
E, só para ter certeza: assegurei que "user" e "password" são válidos.