我正在努力保护一些REST服务,我想支持Windows身份验证。当HTTP客户端未发送任何身份验证凭据时,我的服务将以未授权响应和WWAuthenticate值“Negotiate”进行响应。这会提示浏览器弹出用户名和密码对话框。我输入我的Windows凭据,请求返回到我的服务。这次有一个带有Negotiate方案的Authorization标头,该方案有一个值,我假设它是某种形式的我的Windows标识。如何获取此标头值并将其转换为WindowsIdentity对象(或其他一些让我知道经过身份验证的用户是谁的对象)?
编辑:我的逻辑实际上发生在webapi管道中更高的http处理程序中。
答案 0 :(得分:0)
Controller具有User属性,可用于获取名称:
User.Identity.Name
User.identity是System.Security.Principal.Identity。
答案 1 :(得分:0)
如果您使用的是WebAPI2,则可以
request.GetRequestContext().Principal.Identity
否则你可以在请求消息上的属性字典中挖掘原理。