我目前在IIS中托管的asp.net web api 2站点使用Windows身份验证进行保护。现在我们需要支持除Windows之外的客户端证书身份验证,我很难找到: - 如果这是可能的话 - 如果有任何可用的工作示例
我认为可能能够添加额外的owin中间件或消息处理程序或过滤器,但是看不到任何现有的专门针对Windows而不仅仅依赖于IIS。我知道thinktecture identitymodel可以做客户端证书,但不确定这两者是否可以合并?
我认为可能类似的表格+胜利的例子是https://techblog.dorogin.com/mixed-windows-forms-authentication-for-ajax-single-page-application-e4aaaac0424a
答案 0 :(得分:0)
是的,所以我设法搞清楚了。值得庆幸的是,如果控制器返回401,IIS会自动添加negotiate / ntlm标头,因此如果用户在Windows浏览器上,它将像往常一样自动进行身份验证。因此,考虑到这一点,为了保持Windows auth工作,我:
为了让客户端证书auth正常工作,我使用了宏伟的Thinktecture.IdentityModel库,它允许我只在我的Startup.cs文件中添加一行(我们使用的是OWIN,这很容易)
app.UseClientCertificateAuthentication();