目前我试图解决我的问题 - 这是在我的内部网站上以我应该如何工作的方式实现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并让它处理身份验证? –