首页 文章

从外部应用程序验证ASP.NET Core Identity会话cookie

提问于
浏览
0

ASP.NET Core Identity用作ASP.NET Core应用程序的身份验证和自动化提供程序 . 此外,我想为第三方php应用程序提供SSO . ASP.NET Core应用程序使用Cookie身份验证 . 这两个应用程序都位于同一个域中,因此我的想法是使用PHP验证ASP.NET中的会话cookie,当他登录.NET Core应用程序时,它将在PHP应用程序中自动登录用户 .

更清楚的是,这是如何配置cookie身份验证:

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

因此,在使用ASP.NET Core应用程序登录后,我只需在PHP中使用 $_COOKIES['SessionAuth'] 来获取cookie .

The big question is: How can I validate those cookie and get known to which user it belongs?

从我知道的vBulletin等其他应用程序中,会话cookie的值存储在具有相应UserId的某个数据库表中 . 因此很容易验证这些信息 . 在ASP.NET核心标识中,我找不到任何具有my SessionAuth cookie值的表 .

所以我认为它是某种calulcated或加密字符串,可能类似于JWT . 由于我的ASP.NET Core应用程序使用我的UserId对 AspNetUsers 表进行了目标查询,因此必须能够解密这些字符串,这至少会导致登录用户的Id .

我也开始关注.NET基金提供的source code,这似乎证实了我的理论 . 但我'm not really aware of yet how ASP.NET Core Identity authentication cookies works in detail, so that I'能够解密cookie . 似乎Identity使用machine keys来解密那些存储在服务器文件系统中的cookie .

1 回答

相关问题