asp.net 核心 1.0 在 webapi 中获取 windows 身份

asp.net core 1.0 get windows identity in webapi

我正在使用 Visual Studio 2015 创建一个 Asp.net Core 1.0 (WebApi) 项目。模板是 ASP.NET Core Web Application (.NET Core)\WebApi(未选择身份验证) ).

在 ValuesController 中,我想从调用该方法的客户端获取 Windows 身份。

using System.Security.Claims;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Http;
...
[Route("api/[controller]")]
    public class ValuesController : Controller
    {
        [HttpGet]
        [Route("GetIdentity")]
        public string GetIdentity()
        {
            //method1
            var userId = User.GetUserId();
            //method2
            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            return userId;
        }
    }

目前没有 method1method2 中预期的结果 returns。有什么想法吗?

没有任何身份验证,任何 Web 框架都无法确定您的用户身份。

选择项目模板 "ASP.NET Core Application (.NET Core)\WebApi”并将身份验证从“No Authentication”更改为您认为合适的任何身份验证,例如“Windows Authentication”。

然后你可以访问控制器的 User 成员,如果它用 [Authorize] 属性注释。

[Authorize]
[Route("api/[controller]")]
public class ValuesController : Controller
{        
    [HttpGet]
    public string Get()
    {
        return User.Identity.Name;
    }
}

如果您想拥有个人用户帐户,请选择 MVC 模板(而不是 WebAPI)。然后您可以注册个人帐户并使用其凭据进行身份验证。

如果您是从未经身份验证的模板开始的,那么您可以在 Properties 文件夹的 launchSettings.json 中启用 Windows 身份验证。

{
   "iisSettings": {
      "windowsAuthentication": true,
      "anonymousAuthentication": false,
      ...
    },
    ...
 }