Firefox到本地主机的NTLM凭据

Firefox到本地主机的NTLM凭据,firefox,authentication,iis,ntlm,Firefox,Authentication,Iis,Ntlm,我正在尝试建立一个WebAPI web服务和网站,它将在我们公司的内部网上运行。我正在使用IIS托管Web服务(A)和我的网站(B)。我网站上的一个页面向web服务发出请求,因此: var URL = 'http://MachineName:80/AWebService/api/GetGuid'; var request = new XMLHttpRequest(); request.open("GET", URL, false); request.withCredentials = "true

我正在尝试建立一个WebAPI web服务和网站,它将在我们公司的内部网上运行。我正在使用IIS托管Web服务(A)和我的网站(B)。我网站上的一个页面向web服务发出请求,因此:

var URL = 'http://MachineName:80/AWebService/api/GetGuid';
var request = new XMLHttpRequest();
request.open("GET", URL, false);
request.withCredentials = "true";
request.send();
var response = request.responseText;
return response;
Web服务代码如下所示:

[EnableCors(origins: "http://localhost", headers: "*", methods: "*")]
public class StoneSoupController : ApiController
{
    [ActionName("GetGuid")]
    public HttpResponseMessage GetGuid()
    {
        var indenty = this.User.Identity;
        Guid g = Guid.NewGuid();

        HttpResponseMessage msg = new HttpResponseMessage();
        msg.Content = new StringContent(g.ToString());
        msg.Headers.Add("Access-Control-Allow-Origin", "http://localhost"); //tried with and without this
        msg.Headers.Add("Access-Control-Allow-Credentials", "true"); //tried with and without this
        return msg;

    }
}
如果我在IIS中将web服务的身份验证模式设置为匿名身份验证,则web服务将按预期返回guid字符串。但是,我需要控制哪些用户能够访问Web服务上的某些方法,并希望使用他们的windows凭据来执行此操作

我的问题是,我似乎无法让Firefox发送windows凭据。我已尝试包括
http://localhost
在Firefox中的
关于配置的
中的network.automatic ntlm auth.trusted URI
,但这似乎没有任何效果

我已启用IIS登录,这是它为请求记录的内容

2013-08-01 21:36:05 136.203.40.232 GET /AWebService/api/GetGuid - 80 - 136.203.40.232 Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:17.0)+Gecko/20100101+Firefox/17.0 200 0 0 965
如您所见,事务中没有用户id


有人能帮我吗?

当响应标题出现时,浏览器将询问或自动发送用户凭据

WWW.NTLM

步骤2:

您需要将web api的身份验证更改为windows,并将“授权”属性添加到操作或控制器

步骤3: Firefox不像IE那样发送凭证。您需要更改firefox设置 关于:配置
将您的应用程序url设置为此可变网络。自动ntlm身份验证受信任的URI

关于您对Giridhar的评论:
可能是IIS没有启用“HTTP保持活动”

启用HTTP保持有效性

  • 在IIS管理器中,展开本地计算机,展开“网站”文件夹,右键单击该网站,然后单击“属性”

  • 在“网站”选项卡的“连接”部分中,单击“启用HTTP保持有效性”复选框

  • 单击应用,然后单击确定


  • (From)

    嗨,Giridhar,很抱歉我花了这么长时间才回复。使用HTTPfox,我可以看到响应头“WWW Authenticate”最初的值为“NegotiateNTLM”。Firefox弹出一个询问用户名/密码的弹出窗口。当我输入用户/密码时,它会立即再次弹出,它将永远这样做。在第一个请求之后,我看到我有一个“Authorization”的请求头,值为“NTLM TlRMTVNTUAAB…”,现在有一个“NTLM TIRMTVNTUAAC…”的响应头,知道我做错了什么吗?