【发布时间】:2021-07-29 22:35:30
【问题描述】:
我想在 App1 中进行身份验证,然后单击指向 App2 的链接,而不必进行身份验证。我想出了一个非常常见的场景。 this doc 说它非常容易实现。所以我逐字创建了一个身份验证应用程序here。
我按照文档中的建议应用了额外的 2 行代码
services.AddDataProtection()
.PersistKeysToFileSystem("{PATH TO COMMON KEY RING FOLDER}")
.SetApplicationName("SharedCookieApp");
services.ConfigureApplicationCookie(options => {
options.Cookie.Name = ".AspNet.SharedCookie";
});
然后我将它部署到我的本地 IIS 服务器(https://localhost/App1),它运行良好。
对于 App2,我应用了与上面相同的两行代码并将其部署到我的本地 IIS 服务器(https://localhost/App2)。对 App1 进行身份验证然后单击 App2 的链接后,我收到错误消息“未指定身份验证方案,并且未找到 DefaultChallengeScheme”。我认为这必须在 App2 中遗漏一些东西,但文档只包含这两行代码。无论如何,我尝试添加以下每个(不是同时)4 个选项来让它开心,但没有任何效果。
services.AddAuthentication("Identity.Application");
services.AddAuthentication();//fails asking for default schema and challenge
services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<SharedAuthContext>();//fails
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
});
App2 中显然缺少某些东西,但我无法弄清楚?
【问题讨论】:
标签: asp.net .net authentication cookies