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舉例