如何在ASP.NET Identity Owin站点和ASP.NET WebAPI之间使用Cookie身份验证或ClaimsIdentity

时间:2015-05-14 16:48:19

标签: asp.net asp.net-web-api asp.net-identity claims-based-identity

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

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

欢迎任何链接或想法。

如果有任何示例在两个站点之间传递ClaimsIdentity会很好 我们只选择UseCookieAuthentication,因为它类似于FormsAuthentication,但如果我们能够找到方法,我们不反对使用声明身份验证。

通过添加

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

1 个答案:

答案 0 :(得分:1)

我建议使用ClaimsIdentity而不是尝试传递Cookie。这样你就可以注册"带有WebAPI应用程序的Web应用程序。

我通过描述假设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。