目前我試圖解決我的問題 - 這是在我的內部網站上以我應該如何工作的方式實現NTLM授權,即只在特定頁面上要求密碼。不只是打主頁 - 所以網站應該分爲兩部分:可用於所有和受限制的。C#幫助類實現NTLM授權
這個問題我使用Nancy框架,它本身並沒有實現NTLM。但這並不能阻止真正的牛仔程序員。所以我試圖開發定製的請求/響應序列來完成這個目標。
現在我已經發現this Q&A,但解決方案也被粘在IIS ...
我發現site有許多關於NTLM複雜的信息和我想知道是否有任何C#類來簡化這一過程?
即幫助創建不同類型的響應。
目前我的代碼看起來是這樣的:
Get["/Profile/"] = parameters =>
{
var request = this.Request;
if (this.Request.Headers.Keys.Any(x => x == "Authorization"))
{
var items = Response.Context.Items;
var expert = new Expert(WindowsIdentity.GetCurrent());
var model = expert.Ensure();
return View["Profile.liquid", model];
}
else
{
var response = new Response();
response.StatusCode = HttpStatusCode.Unauthorized;
response.Headers.Add("WWW-Authenticate", "NTLM");
return response;
}
};
但它實現了NTLM授權的唯一的第一階段。是否可以避免大量的手動代碼來實現其他步驟,包括準備使用助手?
爲了防止英語不是您的第一語言,您會意識到「牛仔程序員」是一個貶義詞嗎? –
@本,你說得對,英語不是我的第一語言。但我知道「牛仔程序員」的成語。這是絕望造成的諷刺。如果Windows授權在IIS,ASP.NET MVC中表現不佳,就像我看到的那樣。在南希它根本不存在。我需要以幾乎任何成本實現它... – shytikov
你可以調用SSPI http://msdn.microsoft.com/en-us/library/windows/desktop/aa380493(v=vs.85).aspx你*可能*能夠通過NTLM驗證密碼......它可能取決於你正在運行你的進程的用戶的AD權限。但爲什麼不只是在IIS下運行Nancy並讓它處理身份驗證? –