2017-04-08 49 views
0

ASP.NET Core Identity用作ASP.NET Core應用程序的身份驗證和自動化提供程序。此外,我想爲第三方php應用程序提供SSO。 ASP.NET Core應用程序使用Cookie身份驗證。這兩個應用程序都位於同一個域中,所以我的想法是使用PHP驗證ASP.NET中的會話cookie,當他在NET Core應用程序中登錄時,PHP將自動在PHP應用程序中登錄用戶。從外部應用程序驗證ASP.NET Core Identity會話cookie

更清楚,這是cookie認證的配置:

services.Configure<IdentityOptions>(options => { 
       options.Cookies.ApplicationCookie.CookieName = "SessionAuth"; 
       options.Cookies.ApplicationCookie.LoginPath = new PathString("/Account/Login"); 
      }); 

因此,使用ASP.NET應用程序的核心在登錄後,我簡直可以用$_COOKIES['SessionAuth']在PHP中得到的cookie。

最大的問題是:如何驗證這些cookie並獲知它屬於哪個用戶?

從其他應用程序,如vBulletin,我知道,會話cookie的值存儲在一些數據庫表中與相應的UserId。所以很容易驗證這些信息。在ASP.NET Core Identity中,我找不到任何含有我的SessionAuth cookie的表。

所以我認爲它的某種坩堝或加密字符串,可能類似於智威湯遜。由於我的ASP.NET Core應用程序使用我的UserId對AspNetUsers表執行有針對性的查詢,因此必須能夠解密這些字符串,這至少會導致登錄用戶的Id。

我也開始研究.NET基金提供的source code,這似乎證實了我的理論。但是我並沒有真正意識到ASP.NET Core Identity身份驗證Cookie是如何工作的,因此我可以解密cookie。似乎Identity使用machine keys來解密存儲在服務器文件系統中的cookie。

回答

相關問題