支持基本、匿名和 Windows 身份验证的 Web 服务/API

Posted

技术标签:

【中文标题】支持基本、匿名和 Windows 身份验证的 Web 服务/API【英文标题】:web service/api supporting basic, anonymous and windows authentication 【发布时间】:2015-08-27 05:19:51 【问题描述】:

我们有多个 Web 服务提供对一些大型数据提取的访问。它们被实现为 http 处理程序,因此我们可以将结果直接流式传输到响应流中。我们已经在单个端点上进行了匿名和 HTTP 基本身份验证。我们现在想添加 Windows 身份验证,以便内部用户可以访问他们可以从内部 Web 应用程序获得的所有相同数据。

但是,如果我在 IIS 的配置中禁用匿名身份验证,我只能让 Windows 身份验证工作。显然,这意味着对这个端点的匿名请求停止工作。我没有测试 HTTP Basic,但我猜它们也会停止工作。

我知道我们可以创建一个新端点,仅用于 Windows 身份验证请求。但是,有没有办法让它与单个端点一起工作,就像我们已经拥有的匿名和基本身份验证一样?

由于启用了匿名,用户无法使用他们的网络浏览器发出经过身份验证的请求,但我们可以接受这个限制。我尝试创建一个发出 XHR 请求并将 withCredentials 设置为 true 的 html 页面,但 Web 服务仅在 IIS 中禁用匿名身份验证时才能看到用户名。我还创建了一个控制台应用程序,它试图以不同的方式强制使用网络凭据。但同样,Web 服务仅在禁用匿名请求时才能看到用户名。

有谁知道是否可以在单个 URL 上实现匿名和 Windows 身份验证?

【问题讨论】:

【参考方案1】:

不能在同一个端点同时启用 WindowsAuthentication 和 Anonymous 身份验证。 您将不得不创建不同的 url

【讨论】:

感谢您的回复。我希望有一种很难找到的方法来做到这一点,但没有其他人给出解决方案。

以上是关于支持基本、匿名和 Windows 身份验证的 Web 服务/API的主要内容,如果未能解决你的问题,请参考以下文章

匿名之前的 IIS Windows 身份验证

IIS 混合匿名和 Windows 身份验证

如何使用默认域在 Web.config 中启用基本身份验证和匿名身份验证?

WCF WebHttp 混合身份验证(基本和匿名)

Kestrel 上的 Blazor Windows 身份验证仅在本地工作?在身份验证握手请求之间收到匿名请求

WCF - Windows 身份验证 - 安全设置需要匿名