我有一個(gè)使用 JWT 令牌進(jìn)行身份驗(yàn)證的 .NET Core 2.2 Web API。令牌由 Identity Server 4 在單獨(dú)的 API 上生成。所有身份驗(yàn)證和授權(quán)都可以使用 JWT 令牌按預(yù)期工作。但我需要擴(kuò)展它以允許使用 API 密鑰。如果提供了 API 密鑰,我想加載該特定用戶的聲明,將其添加到請(qǐng)求中并讓 Authorize 屬性處理設(shè)置的策略。這是我按照這里的建議到目前為止所做的。我的錯(cuò)誤與鏈接的帖子完全相同,它也適用于我使用具有一組角色的 GenericPrincipal 但我使用的是 AuthorisationPolicies 并且我當(dāng)前的實(shí)現(xiàn)總是收到 401 錯(cuò)誤,給我類似于上面鏈接的錯(cuò)誤。啟動(dòng).cspublic void ConfigureServices(IServiceCollection services) { services.AddMvcCore(options => { options.Filters.Add(new RequireHttpsAttribute()); options.Filters.Add(new AuthorizeFilter()); options.Filters.Add(typeof(ValidateModelStateAttribute)); options.AllowEmptyInputInBodyModelBinding = true; }) .AddAuthorization(options => { options.AddPolicies(); }) .AddJsonFormatters(); services.AddAuthentication(IdentityServerAuthenticationDefaults.AuthenticationScheme) .AddIdentityServerAuthentication(options => { options.Authority = Configuration["Authentication:Authority"]; options.RequireHttpsMetadata = true; options.ApiName = Configuration["Authentication:ApiName"]; }); services.AddCors(); }public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseCors(policy => { policy.AllowAnyHeader(); policy.AllowAnyMethod(); policy.AllowAnyOrigin(); }); app.UseHttpsRedirection(); app.UseMiddleware<ApiKeyMiddleware>(); app.UseAuthentication(); app.UseMvc(); }
1 回答

慕無忌1623718
TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
顯然,我必須在此處設(shè)置AuthenticationType
為Custom 。ClaimsIdentity
var identity = new ClaimsIdentity(claims, "Custom");
- 1 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報(bào)
0/150
提交
取消