1

我们正在研究纯粹使用Windows身份验证的内部MVC3应用程序。有一种视图可以在调用Web服务之前对控制器操作执行一些处理操作。我们遇到的问题是,如果关闭匿名访问(如在Windows身份验证打开时),则从控制器操作调用该服务会导致401:未经授权的错误。AJAX调用调用WebService的MVC控制器

我们遇到了一个双跳问题,即在服务中调用服务时,凭据未正确从服务器传递到服务器的问题。我想知道AJAX调用是否有点模仿相同的行为,而不是将正确的Windows凭证传输给控制器,然后控制器不会将正确的凭证传递给Web服务。

我见过一些帖子,展示了如何传递用户名和密码以及jQuery调用,但没有提及带有Windows身份验证的有效方式。

有没有人遇到类似的问题?我们宁愿不在Web服务上留下匿名访问权限,因为它是我们想要控制访问权限的一些敏感数据。

+0

我应该详细阐述一下。我正在谈论Web服务驻留在虚拟目录中的匿名访问。对于Web应用程序的Windows身份验证在任何情况下都能正常工作。 –

回答

0

你有身份模拟打开,如在这一问题描述:

How to get Windows user name when identity impersonate="true" in asp.net?

+0

在MVC3应用程序中,我们在web.config中包含:。我们确实在初次部署应用程序时想到了这一点,但没有任何变化。这也必须为Web服务?或者那很重要? –

+0

我猜你只需要在服务中使用authentication = windows,但我从来没有这样做过,所以我不确定。 – BNL

+0

用户可以直接调用服务吗? – BNL

0

一位同事做了上周末的一些研究,并确定它可能是与Kerberos身份验证设置在服务器上为以及jQuery调用。为了解决它,我们只是将Web服务重构为应用程序引用的库。我们最初将它作为一项Web服务,因为我们以后认为这些数据需要从其他应用程序访问。遇到这个问题,我们很可能会把它变成一个NuGet包。

感谢您的意见。