问题描述
我遇到了一些问题,例如这,但是我不明白如何为Debian解决.
I have some issue like this, but i can't understand how to solve it for Debian.
首先,我按如下所述配置我的应用程序
At first, i configure my application as described below
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme =MyAuthSchemeName,
CookieName = MyCookiName,
AutomaticAuthenticate = true,
AutomaticChallenge = false,
SlidingExpiration = true,
ExpireTimeSpan = TimeSpan.FromDays(1),
DataProtectionProvider = DataProtectionProvider.Create(MyApplicationName)
});
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticChallenge = false,
AutomaticAuthenticate = true,
Authority = IdentityServerConnectionString,
RequireHttpsMetadata = false,
BackchannelHttpHandler = new HttpClientHandler().ServerCertificateCustomValidationCallback = (request, cert, chain, errors) => true,
TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateIssuer = false,
}
});
app.UseMvc();
对于Windows,它运行完美(我使用Host启动此代码,而不是IIS!),但是对于Debian,它失败了.有什么想法吗?
For windows it works perfectly (I use Host for launching this code, not IIS !), but for Debian it fails.Any ideas?
UPD::我在日志中看到下一条消息:Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware MyAuthSchemeName未通过身份验证.失败消息:取消保护票证失败
UPD: I see next message in logs: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware MyAuthSchemeName was not authenticated. Failure message: Unprotect ticket failed
推荐答案
我找到了解决此问题的方法.主要原因是DataProtectionProvider的设置.对于Debian,需要使用下面的代码
I found solution for this issue.Key cause is a settings of DataProtectionProvider.For Debian it's needed to use code below
Startup.cs:
Startup.cs :
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection().SetApplicationName(ApplicationName).
PersistKeysToFileSystem(
new DirectoryInfo(Configuration["/some_path_to_folder_for_keys"]))
}
并且应删除cookie的dataprovider初始化(来自UseCookieAuthentication());
And dataprovider initialization should be removed for cookie (from UseCookieAuthentication());
这篇关于Debian:未配置身份验证处理程序来处理该方案:自动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!