2

我有一個ASP.NET Web應用程序使用ASP.NET身份與啓動UseCookieAuthentication登錄。
登錄網站工作正常。
我也有一個ASP.NET WebAPI網站,我用它來收集數據。我想使用在登錄網站上創建的相同Cookie來保護WebAPI。
機器密鑰相同,UseCookieAuthentication使用相同的CookieName和CookieDomain設置。如何UseCookieAuthentication或ClaimsIdentity之間ASP.NET身份Owin網站和ASP.NET WebAPI

我似乎無法找到任何關於如何在ASP.NET網站之間使用基於Cookie的身份驗證的好文章。

歡迎任何鏈接或想法。

如果有任何在兩個站點之間傳遞ClaimsIdentity的例子會很棒。
我們只選擇UseCookieAuthentication,因爲它與FormsAuthentication類似,但我們並不反對使用聲明身份驗證,如果我們能夠找出如何。

加入

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

您是否找到以上解決方案? – Jek

回答

1

我會建議ClaimsIdentity,而不是試圖繞過餅乾工作。這樣,您就可以使用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。

+0

這都是很好的文章,但基於聲明的文章是關於使用自定義OAuthProvider,但我使用ASP.NET身份實體框架提供程序。添加app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);對我的創業似乎有幫助。 – goroth

+0

我更喜歡「索賠」方法,而不是用戶「CORS」,但我找不到任何有關如何使這項工作的好文章。基本上我無法弄清楚在WebAPI網站啓動時必須做些什麼才能在上下文中獲得聲明。 – goroth

+0

你看過這些嗎? http://bitoftech.net/2015/03/31/asp-net-web-api-claims-authorization-with-asp-net-identity-2-1/或http://bitoftech.net/2015/01/21/ASP淨身份-2-與-ASP網的Web-API-2賬戶管理/ –