2011-10-11 84 views
0

我們正在使用表單身份驗證構建需要來自IIS服務器的一些數據的命令行應用程序。如何從命令行應用程序執行表單身份驗證?我試過了,但發生的一切就是請求被重定向到登錄頁面。命令行應用程序,IIS需要表單身份驗證

我猜如果我可以包含一個身份驗證cookie請求與正確的憑據,下載會很好。

我可以控制客戶端和服務器。我可以在web.config中設置machineKey,但無法弄清楚如何在命令行應用程序中設置它。這必須是相同的驗證密鑰才能以正確的格式加密cookie?

該服務器是用asp-net mvc編寫的。

var request = (HttpWebRequest)WebRequest.Create(uri); 
var formsCookiePath = "/"; 
var cookieName = ".FormName"; 
var domain = "localhost"; 
var username = "username"; 
var password = "pa$$word"; 

var ticket = new FormsAuthenticationTicket(1, 
    username, 
    DateTime.Now, 
    DateTime.Today.AddYears(10), 
    true, 
    password, 
    formsCookiePath); 

var encryptedTicket = FormsAuthentication.Encrypt(ticket); 

var authenticationCookie = new Cookie(
    cookieName, 
    encryptedTicket, 
    formsCookiePath, 
    domain) 
    { 
    HttpOnly = true, 
    Secure = false 
    }; 

request.CookieContainer = new CookieContainer(); 
request.CookieContainer.Add(authenticationCookie); 

request.UserAgent = "Internal downloader"; 

var loWebResponse = (HttpWebResponse)request.GetResponse(); 

更新: 基於從Zruty我用這個例子來生成身份驗證Cookie的答案:

ASP.NET Authorization from Console Application & Timeout

回答

0

要在本地模擬驗證碼你的客戶嗎?我認爲你走錯了路。

您應該讓服務器工作(cookie生成)到服務器。隨後發出兩個請求:一個包含您的登錄信息(服務器將生成一個cookie),另一個包含提供的cookie。

相關問題