Веб-API ASP.NET Core 7 — авторизация не удалась. Эти требования не были выполнены: DenyAnonymousAuthorizationRequirementC#

Место общения программистов C#
Ответить
Anonymous
 Веб-API ASP.NET Core 7 — авторизация не удалась. Эти требования не были выполнены: DenyAnonymousAuthorizationRequirement

Сообщение Anonymous »

Код: Выделить всё

Startup.cs:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = jwtSettings.Issuer,
ValidAudience = jwtSettings.Audience,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key)),
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
};
});

app.UseMiddleware();

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(options =>
{
foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
}
});
}

app.UseCors();
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
Генерация токена:

Код: Выделить всё

    string CreateToken()
{
var jwtSettings = configuration.GetSection(nameof(AppSettings.Jwt)).Get();

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.Key));

var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var claims = new List
{
new Claim(JwtRegisteredClaimNames.Name, loginDto.Username)

};

var jwtSecurityToken = new JwtSecurityToken(
expires: DateTime.Now.AddMinutes(30),
claims: claims,
signingCredentials: credentials,
issuer: jwtSettings.Issuer,
audience: jwtSettings.Audience);

var jwt = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);

return jwt;
}
Контроллер:

Код: Выделить всё

[ApiController]
[ApiVersion("1.0")]
[Route("api/[controller]")]
public class CustomerEnvironmentsController : ControllerBase
{
#region Fields

private readonly ICustomerEnvironmentsRepository customerEnvironmentsRepository;
private readonly IMapper mapper;
private readonly IDtoValidatorFactory apiValidatorFactory;
private readonly IHttpHeaderParser httpHeaderParser;

#endregion

#region Constructor

public CustomerEnvironmentsController(ICustomerEnvironmentsRepository customerEnvironmentsRepository, IMapper mapper, IDtoValidatorFactory apiValidatorFactory, IHttpHeaderParser httpHeaderParser)
{
this.customerEnvironmentsRepository = customerEnvironmentsRepository ?? throw new ArgumentNullException(nameof(customerEnvironmentsRepository));
this.mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
this.apiValidatorFactory = apiValidatorFactory ?? throw new ArgumentNullException(nameof(apiValidatorFactory));
this.httpHeaderParser = httpHeaderParser ?? throw new ArgumentNullException(nameof(httpHeaderParser));
}

#endregion

[Authorize]
[HttpGet]
public async Task GetCustomerEnvironments()
{
//Ommitted
}
}
И мне нужно это только для определенных конечных точек, поэтому я добавил [Authorize] только на одну конечную точку. Я пробовал установить свой токен в качестве аутентификации в Swagger, а также пробовал вручную отправить свой токен из внешнего приложения с заголовком авторизации с токеном носителя значения.
Я просто не знаю, что еще проверить.

Подробнее здесь: https://stackoverflow.com/questions/765 ... re-not-met
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»