【发布时间】:2014-07-27 06:16:17
【问题描述】:
编写了一个自托管的 WCF (4.5) REST 服务。 CORS 几乎已正确实现,但我遇到了问题,因为我需要支持多种身份验证方法,即 Basic 和 Negotiate。
如果我只将 Basic 和 Negotiate 添加到 ServiceAuthenticationBehavior,CORS 将不起作用,因为 WCF 将在预检 OPTIONS 请求上发送 401。
如果我添加匿名,这样 ServiceAuthenticationBehavior 将允许未经身份验证的请求,如果我将浏览器直接指向服务,浏览器不会提示我输入凭据。
我需要做的是发送带有 WWW-Authenticate: Basic Negotiate 的 401,所有请求的标头,但未经身份验证的 OPTION 请求除外。
我遇到的问题是我不知道 WCF 的哪个部分处理了这个问题。是 WebServiceHost、WebHttpBehavior 之类的服务行为还是 ServiceAuthenticationManager?
MS 文档很烂,ServiceAuthenticationManager 被定义为“代表一个服务认证管理器”。
【问题讨论】:
标签: wcf authentication cors