我正在寻找一种在ASP.NET Core中共享根应用程序和子应用程序(配置为应用程序的虚拟目录)之间的登录屏幕的方法。子应用程序的LoginPath将指向根登录页面(returnUrl将指向该子页面应用程序)。基本上,我需要子应用程序来识别根应用程序设置的凭据。我正在使用cookie身份验证。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "Cookie",
LoginPath = new PathString("./signin/"),
AccessDeniedPath = new PathString("/unauthorized/"),
AutomaticAuthenticate = true,
AutomaticChallenge = true
});
这是我发布信用证的代码。
var issuer = SettingBusiness.GetSettingValueAsString("MembersSiteUrl");
var claims = new List<Claim> {new Claim(ClaimTypes.Name, user.UserId.ToString(), ClaimValueTypes.Integer32, issuer)};
var userIdentity = new ClaimsIdentity("MembersUser");
userIdentity.AddClaims(claims);
var userPrincipal = new ClaimsPrincipal(userIdentity);
var authenticationProperties = new AuthenticationProperties
{`enter code here`
ExpiresUtc = DateTime.UtcNow.AddMinutes(60),
IsPersistent = false,
AllowRefresh = true
};
await HttpContext.Authentication.SignInAsync("Cookie", userPrincipal, authenticationProperties);
很难找到有关此特定情况的信息。任何帮助将不胜感激。
答案 0 :(得分:0)
我认为这个cookie是使用新的data protection system加密的。
您的根应用程序将使用其私钥加密cookie。您的子应用程序当前无权访问此私钥,并且无法解密此cookie。
为了让您的子应用程序能够解密cookie,您需要设置共享key storage provider。