0

我正致力於保護一些REST服務,並且我想支持Windows身份驗證。當HTTP客戶端沒有發送認證憑證時,我的服務響應一個未經授權的響應和一個WWAuthenticate值'Negotiate'。這會提示瀏覽器彈出用戶名和密碼對話框。我輸入我的Windows憑據,然後請求返回到我的服務。這次有一個協商方案的授權標題,其中有一個我認爲是我的Windows標識的某種形式的值。我如何獲取這個標頭值並將其轉換成一個WindowsIdentity對象(或者讓我知道經過身份驗證的用戶是誰的其他對象)?如何從Negotiate HTTP標頭值獲取WindowsIdentity

編輯:我的邏輯實際上發生在Webapi管道中較高的http處理程序中。

回答

0

控制器具有一個用戶屬性,它可以被用來獲取名稱:

User.Identity.Name 

User.identity是System.Security.Principal.Identity。

+0

哎呀,對不起,我忘了我實際上正在做一個http處理程序中更高級的管道。 – user2719430

0

如果您正在使用WebAPI2你可以做

 request.GetRequestContext().Principal.Identity 

否則你可以挖掘的原則列於請求消息中的屬性字典。

+0

我實際上是想自己解析談判令牌(我通過與AD交談來假設),而不是依靠IIS將它翻譯成我的身份。 – user2719430

+0

@ user2719430您可以輕鬆訪問消息處理程序中的auth頭文件。然後你可以自己設置Prinicpal。如果您設法自己進行Windows身份驗證,我很樂意看到該代碼。 –

+0

執行Windows驗證自己實際上是我想要問的問題。我發現可用的材料很少,但可能是不知道要搜索什麼的結果。 – user2719430