Я новичок в использовании Azure Реализация Active Directory. У меня есть WEB API (. net ядро) с Azure защита Active Directory. Я пытаюсь использовать мой WEB API через Postman, я знаю, что для использования веб-API нужен токен Auth2. Я уже сгенерировал токен auth2 в соответствии с этой ссылкой на документацию .
После генерации токена Auth2 добавьте токен auth2 в заголовок, например Authorization: Bearer e....
, но результат всегда будет выглядеть, как показано на рисунке ниже.
Я уверен, что предоставлю необходимое разрешение в разделе «Разрешения API», а «Тип разрешения» - «Делегированные разрешения» в Azure Портал.
Пожалуйста, смотрите мой класс запуска:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(o =>
{
o.Filters.Add(new AuthorizeFilter("default"));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddAuthorization(o =>
{
o.AddPolicy("default", policy =>
{
// Require the basic "Access app-name" claim by default
policy.RequireClaim(DotNetCoreApiSample.Authorization.Constants.ScopeClaimType, "user_impersonation");
});
});
services
.AddAuthentication(o =>
{
o.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(o =>
{
o.Authority = Configuration["Authentication:Authority"];
o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
// Both App ID URI and client id are valid audiences in the access token
ValidAudiences = new List<string>
{
Configuration["Authentication:AppIdUri"],
Configuration["Authentication:ClientId"]
}
};
});
// Add claims transformation to split the scope claim value
services.AddSingleton<IClaimsTransformation, AzureAdScopeClaimTransformation>();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// Very important that this is before MVC (or anything that will require authentication)
app.UseAuthentication();
app.UseMvc();
}
}