我正在使用Identityserver令牌来验证并得到错误“未注册身份验证处理程序。您是否忘记了调用AddAuthentication()。AddSomeAuthHandler?”
下面是我的代码
Web API startup.cs:
public void ConfigureServices(IServiceCollection服务) {
var config = Configuration.GetSection("AuthSettings").Get<AuthSettings>();
services.AddAuthentication(
options =>
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}
).AddJwtBearer(o =>
{
o.Authority = config.AuthUrl;
o.Audience = config.AuthAudience;
o.RequireHttpsMetadata = false;
o.SaveToken = true;
//o.TokenValidationParameters = tokenValidationParameters;
//o.Configuration = new OpenIdConnectConfiguration();
o.BackchannelHttpHandler = new HttpClientHandler()
{
ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator,
Proxy = new WebProxy(Configuration["System:Proxy"])
};
});
//services.AddAuthorization(options =>
//{
// options.AddPolicy("PublicSecure", policy => policy.RequireClaim("client_id", config.ClientId));
//});
services.AddAuthorization();
客户端startup.cs:
var authConfig = Configuration.GetSection(“ AppSettings”)。Get();
// Adds an instance of the class that contains credentials
services.AddSingleton(new ClientCredentialsTokenRequest
{
Address = authConfig.AuthURL,
ClientId = authConfig.AuthClientId,
ClientSecret = authConfig.AuthClientSecret,
Scope = authConfig.AuthScope
});
services.AddAuthentication();
请帮助我修复代码错误 谢谢
答案 0 :(得分:0)
您需要在Startup.Configure方法中添加以下两行:
app.UseAuthentication();
app.UseAuthorization();
在useRouting()语句之后添加它们。