1

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

我们遇到了双跳问题,在服务中调用服务时凭据没有正确地从服务器传递到服务器。我想知道 AJAX 调用是否在某种程度上模仿了相同的行为,并且没有将正确的 Windows 凭据传输到控制器,然后控制器不会将正确的凭据传递给 Web 服务。

我看过一些帖子,展示了如何在 jQuery 调用中传递用户名和密码,但没有提及,这是一种有效的方法,可以带来 Windows 身份验证。

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

4

2 回答 2

0

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

感谢您的评论。

于 2012-09-04T14:37:55.213 回答
0

您是否按照此问题中的描述打开了身份模拟:

在 asp.net 中身份 impersonate="true" 时如何获取 Windows 用户名?

于 2012-08-31T18:35:57.797 回答