0

我目前有一个asp.net web api 2站点托管在IIS与Windows身份验证安全。我们现在需要支持除Windows之外的客户端证书认证,并且我正在努力寻找: - 如果可以的话 - 如果有任何可用的示例Web api 2 - windows +客户端认证auth - 有可能吗?

我认为可能可以添加额外的owin中间件或消息处理程序或过滤器,但无法看到任何现有的为Windows专门设计的工具,而不仅仅依赖于IIS。我知道thinktecture identitymodel可以做客户端证书,但不知道两者是否可以合并?形式

例子+获胜,我认为可能是相似的是这里https://techblog.dorogin.com/mixed-windows-forms-authentication-for-ajax-single-page-application-e4aaaac0424a

回答

0

右,所以我设法弄明白。值得庆幸的是,如果一个控制器返回一个401,IIS会自动添加negotiate/ntlm头文件,所以如果用户在Windows浏览器上,它将会像往常一样自动进行身份验证。因此,考虑到这一点,让Windows验证工作,我:

  • 更新了网站在IIS和VS既允许匿名和Windows身份验证
  • 添加[AuthorizeAttribute]作为全球行动过滤器(这将导致401要返回,如果用户不被时间验证他们打

要获得客户端证书身份验证的工作,我用了宏伟Thinktecture.IdentityModel库,这让我只有一行添加到我的启动过滤器) .cs文件(我们使用OWIN,所以这很容易)

app.UseClientCertificateAuthentication(); 

查看https://github.com/IdentityModel/Thinktecture.IdentityModel/blob/master/samples/OWIN/AuthenticationTansformation/KatanaAuthentication/Startup.cs举例