如何为ITokenAcquisition配置依赖注入?遇访问权限错误求助
解决ITokenAcquisition依赖注入的问题
你遇到的错误是因为TokenAcquisition是Microsoft.Identity.Web库中的内部类,无法直接在你的代码里将它作为实现类注册到依赖注入容器。
正确的做法是不用手动注册ITokenAcquisition,而是借助Microsoft.IdentityWeb提供的扩展方法,这些方法会自动完成所需服务的注册,步骤如下:
确保项目已安装
Microsoft.Identity.WebNuGet包(未安装的话通过NuGet包管理器或CLI安装)。在Program.cs中使用对应扩展方法配置身份验证,同时自动注册
ITokenAcquisition:- 如果是API项目,用以下代码:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); // 配置Identity Web API认证,自动注册ITokenAcquisition builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration) .AddTokenAcquisition(); var app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run(); - 如果是Web App(MVC/Razor Pages)项目,用以下代码:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); // 配置Identity Web App认证,自动注册ITokenAcquisition builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration) .AddTokenAcquisition(); var app = builder.Build(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
- 如果是API项目,用以下代码:
完成以上配置后,你的控制器代码无需修改,就能正常注入并使用ITokenAcquisition获取用户令牌。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

