如何在 ASP.NET Identity Owin 站点和 ASP.NET WebAPI 之间使用 CookieAuthentication 或 ClaimsIdentity

How to UseCookieAuthentication OR ClaimsIdentity between ASP.NET Identity Owin site and ASP.NET WebAPI

我有一个 ASP.NET Web 应用程序,它使用 ASP.NET Identity 在 Startup 中使用 UseCookieAuthentication 登录。
登录站点运行正常。
我还有一个用于收集数据的 ASP.NET WebAPI 站点。我想使用在登录网站创建的相同 cookie 来保护 WebAPI。
机器密钥是相同的,并且 UseCookieAuthentication 使用相同的 CookieName 和 CookieDomain 设置。

我似乎找不到任何关于如何在 ASP.NET 站点之间使用基于 Cookie 的身份验证的好文章。

欢迎提供任何链接或想法。

如果有任何在两个站点之间传递 ClaimsIdentity 的示例,那就太好了。
我们只选择 UseCookieAuthentication,因为它与 FormsAuthentication 类似,但如果我们能找到方法,我们并不反对使用 Claims Authentication。

通过添加工作

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

我会推荐 ClaimsIdentity,而不是尝试传递 cookie。这样您就可以 "register" Web 应用程序与 WebAPI 应用程序。

我根据描述假设 Web 应用程序和 WebAPI 应用程序位于不同的域或服务器上至少不同的虚拟目录。如果是这样,您可能还想看看 CORS。

以下是几篇相关文章: http://www.jayway.com/2014/09/25/securing-asp-net-web-api-endpoints-using-owin-oauth-2-0-and-claims/

http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

如果 Web 应用程序是 WebAPI 代码的唯一使用者,并且它们可以托管在同一台服务器上,您可以考虑只将 WebAPI 代码添加到 Web 应用程序解决方案中。那你就不用担心CORS了。