Проблема с расшифровкой токена защиты от подделки в приложении .NET 8, развернутом в нескольких регионахC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с расшифровкой токена защиты от подделки в приложении .NET 8, развернутом в нескольких регионах

Сообщение Anonymous »

В настоящее время я разрабатываю веб-приложение с интерфейсом, созданным с использованием Angular 12, и серверной частью, состоящей из трех микросервисов, разработанных с использованием веб-API .NET 8. Мы используем базу данных Azure SQL, и все микросервисы развертываются в рамках одного плана службы приложений Azure. Интерфейсное приложение размещается в отдельной службе приложений Azure в том же плане службы приложений. API-интерфейсы внешнего и внутреннего интерфейса защищены с помощью Microsoft Entra Id, поэтому для связи требуется токен носителя в заголовке.
Чтобы обеспечить безопасность от атак XSRF/CSRF, я реализовал токены защиты от подделки, используя .NET 8. Однако во время тестирования я столкнулся с ошибкой, связанной с расшифровкой токена защиты от подделки.
Конкретное сообщение об ошибке:
"Токен защиты от подделки не может быть расшифрован. Ключ {xxxxx-yyy-aaaa-bbb-ccccccc} не найден в наборе ключей.
Эта проблема сохраняется, несмотря на соблюдение стандартных методов реализации. Вот ресурсы, на которые я ссылался:
https://learn.microsoft.com/en-us/aspne ... aspnetcore -8,0
https://www.dotnetcurry.com/aspnet/1343 ... gery-token
Код:< /p>

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

public class Program
{
public static async Task Main(string[] args)
{
StaticLogger.EnsureInitialized();
Log.Information("Server Booting Up...");
try
{

var builder = WebApplication.CreateBuilder(args);
// Add XSRF protection services
builder.Services.AddAntiforgeryServices();

var app = builder.Build();
app.UseAntiforgeryMiddleware();
app.Run();
}
catch (Exception ex) when (!ex.GetType().Name.Equals("StopTheHostException", StringComparison.Ordinal))
{
StaticLogger.EnsureInitialized();
Log.Fatal(ex, "Unhandled exception");
}
finally
{
StaticLogger.EnsureInitialized();
Log.Information("Server Shutting down...");
Log.CloseAndFlush();
}
}
}

public static class Extensions
{
/// 
/// Adds the antiforgery services.
/// 
/// 
The services.
/// returns the antiforgery services.
public static IServiceCollection AddAntiforgeryServices(this IServiceCollection services)
{
var enableAntiforgeryToken = FeatureManagerService.IsFeatureEnabled(nameof(FeatureFlags.EnableAntiforgeryToken));

if (enableAntiforgeryToken)
{
services.AddMvc(options =>
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});

/// Configuring ApplicationDiscriminator to set the same value across all the microservices to access the cookie for validating request.
/// for reference:  https://github1s.com/dotnet/aspnetcore/blob/main/src/DataProtection/DataProtection/src/DataProtectionOptions.cs
services.Configure(x => { x.ApplicationDiscriminator = Constants.AntiforgeryConstants.XXSRFTOKEN; });

services.AddAntiforgery(options =>
{
options.HeaderName = Constants.AntiforgeryConstants.XXSRFTOKEN;
});

services.AddScoped();
}

return services;
}

/// 
/// Uses the antiforgery.
/// 
/// The application.
/// returns the antiforgery middleware.
public static IApplicationBuilder UseAntiforgeryMiddleware(this IApplicationBuilder app)
{
var enableAntiforgery = FeatureManagerService.IsFeatureEnabled(nameof(FeatureFlags.EnableAntiforgeryToken));

return app.UseIf(enableAntiforgery,
x => x.UseMiddleware());
}
}
Дополнительная информация:
Я был бы признателен за любые идеи или предложения о том, как решить эту проблему расшифровки. Мог ли я пропустить какой-то этап настройки, особенно касающийся развертывания в нескольких регионах?
Может ли кто-нибудь помочь мне здесь, предоставив свои рекомендации? Любая помощь будет принята с благодарностью.

Подробнее здесь: https://stackoverflow.com/questions/786 ... -across-mu
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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