Asp.net mvc 将经过身份验证的ASP.NET身份用户从MVC传递到Web API

Asp.net mvc 将经过身份验证的ASP.NET身份用户从MVC传递到Web API,asp.net-mvc,authentication,asp.net-web-api,asp.net-identity,Asp.net Mvc,Authentication,Asp.net Web Api,Asp.net Identity,我有一个仪表板应用程序,它由一个ASP.NET MVC5表示层和一个提供数据的Web API(通过主机应用程序中JavaScript的ajax调用)组成 该应用程序托管在IIS中,前端MVC应用程序设置为应用程序,Web API应用程序设置为子文件夹(也是IIS应用程序) 所以我的应用程序运行 打电话给。。。数据 如果我在IIS中将两个应用都设置为通过Windows身份验证进行安全保护,那么我可以在主机应用和Web API中读取登录的用户名 我有一个新的要求,即我们有外部用户帐户,因此我已将我的

我有一个仪表板应用程序,它由一个ASP.NET MVC5表示层和一个提供数据的Web API(通过主机应用程序中JavaScript的ajax调用)组成

该应用程序托管在IIS中,前端MVC应用程序设置为应用程序,Web API应用程序设置为子文件夹(也是IIS应用程序)

所以我的应用程序运行 打电话给。。。数据

如果我在IIS中将两个应用都设置为通过Windows身份验证进行安全保护,那么我可以在主机应用和Web API中读取登录的用户名

我有一个新的要求,即我们有外部用户帐户,因此我已将我的MVC应用程序设置为使用ASP.NET标识,在创建新的MVC 5项目时复制示例中提供的基本代码。这对于MVC主机应用程序来说很好,我登录,读取登录的用户名,可以看到我的仪表板,但是对Web API项目的ajax调用失败,因为它们无法再看到用户。HttpContext.Current.User.Identity为null,IsAuthenticated为false

根据我目前的研究,这是因为我的MVC站点使用基于cookie的身份验证方法:

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login"),
        Provider = new CookieAuthenticationProvider
        {....
但是WebAPI是无状态的,正在寻找授权头

如何设置我的子Web API应用程序,以便能够从父应用程序读取登录的用户