如何从Negotiate HTTP标头值获取WindowsIdentity

时间:2013-11-22 21:29:18

标签: rest asp.net-web-api http-headers windows-authentication

我正在努力保护一些REST服务,我想支持Windows身份验证。当HTTP客户端未发送任何身份验证凭据时,我的服务将以未授权响应和WWAuthenticate值“Negotiate”进行响应。这会提示浏览器弹出用户名和密码对话框。我输入我的Windows凭据,请求返回到我的服务。这次有一个带有Negotiate方案的Authorization标头,该方案有一个值,我假设它是某种形式的我的Windows标识。如何获取此标头值并将其转换为WindowsIdentity对象(或其他一些让我知道经过身份验证的用户是谁的对象)?

编辑:我的逻辑实际上发生在webapi管道中更高的http处理程序中。

2 个答案:

答案 0 :(得分:0)

Controller具有User属性,可用于获取名称:

User.Identity.Name

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

答案 1 :(得分:0)

如果您使用的是WebAPI2,则可以

       request.GetRequestContext().Principal.Identity

否则你可以在请求消息上的属性字典中挖掘原理。