用于实现 NTLM 授权的 C# 帮助程序类

标签 c# ntlm nancy

目前我正在尝试解决我的问题 - 以我认为应该如何工作的方式在我的 Intranet 站点上实现 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 授权的第一阶段。通过使用现成的帮助程序,是否可以避免大量手动代码来实现其他步骤?

最佳答案

如果您真的想自己编写所有这些内容,我认为您面临着一项艰巨的任务。此 URL 可能对您有帮助,它包含有关 NTLM 身份验证的一般信息,而且还显示了使用 NTLM 进行 HTTP 身份验证的对话示例:

http://davenport.sourceforge.net/ntlm.html#ntlmHttpAuthentication

另一个可能的探索途径是查看 Mono 代码库中是否有任何可以使用的东西 - 这就是我们对内置 JSON 序列化器所做的事情。

另一个选项是使用表单或基本身份验证,但根据 AD/LDAP 验证用户名/密码。

关于用于实现 NTLM 授权的 C# 帮助程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805704/

相关文章:

ios - AFNetworking 是否支持 NTLM 身份验证?

android - 使用 HttpURLConnection 的 NTLM 身份验证

"AUTH NTLM"的 SMTP 命令

c# - 在南希测试自定义 Bootstrap

NancyFx 如何从错误中删除 tumbeast

c# - 如何更改 Windows Azure 上 IIS 7 上应用程序池的属性 Enable32BitAppOnWin64?

c# - 绑定(bind)集合不起作用

c# - 寻找有关差异问题的解释

session-cookies - 负载平衡 Web 服务器上的 nancyfx session

c# - 如何在方法中使用多个返回语句在 PostSharp 中应用异常方面?