Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Blazor/Razor приложение, работающее по HTTPS с авторизацией по сертификату
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.05.2018(UTC) Сообщений: 9
Сказал(а) «Спасибо»: 5 раз
|
Приветствую. Создал Blazor приложение в Visual Studio 2022, сдобрив Program.cs следующим кодом: Код: builder.Services.Configure<KestrelServerOptions>(options =>
{
options.ConfigureHttpsDefaults(options =>
options.ClientCertificateMode = ClientCertificateMode.RequireCertificate);
});
builder.Services.AddAuthentication(CertificateAuthenticationDefaults.AuthenticationScheme).AddCertificate();
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddIdentityCore<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddSignInManager()
.AddDefaultTokenProviders();
builder.Services.AddSingleton<IEmailSender<ApplicationUser>, IdentityNoOpEmailSender>();
var app = builder.Build();
app.UseAuthentication();
Далее, скачал все четыре *.nupkg файла с https://github.com/CryptoPro/libcore/releases, после чего создал новый Package Source в Nuget Package Manager. Проинсталлировал для проекта в Nuget Package Manager все четыре пакета: CryptoPro.Net.Security CryptoPro.Security.Cryptography CryptoPro.Security.Cryptography.Pkcs CryptoPro.Security.Cryptography.Xml В итоге при запуске Blazor проекта страница проекта в браузере запрашивает выбор сертификата, с коим аутентифицироваться желаю. С не-ГОСТовыми сертификатами, понятное дело, прекрасно работает, но для ГОСТ сертификатов выдаёт ошибку Доступ к localhost запрещен Возникла проблема с вашим сертификатом для входа. Обратитесь за помощью к системному администратору. ERR_SSL_CLIENT_AUTH_CERT_BAD_FORMATОна, как бы, и до установки пакетов CryptoPro.* выдавалась для ГОСТовых сертификатов, но надеялся, что при установке CryptoPro.* произойдёт мэйджик и всё заработает, но нет, не решила. Как заставить C# аутентифицировать пользователей по ГОСТ ключам? Отредактировано пользователем 7 октября 2024 г. 17:45:39(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Добрый день. К сожалению "магия" закончилась на версии "LibCore 2024.1.10.1", которая поддерживает только 6.0, и не совместимая с новым api. Все версии после неё, пока что, без каких исправлений рантайма, которые позволяют заводить что то простой установкой и инициализацией пакетов. Что касается проблемы - самый простой вариант (который используем мы) - использовать обратную прокси (cpnginx, поставляется в комплеткте csp, который понимает ГОСТовые сертификаты) для проброски нам сертификата клиента в хэдере. Сервис и nginx настраивается для работы с хэдером (X-SSL-CERT или ssl-client-cert): https://learn.microsoft....on-in-custom-web-proxiesВ коде можно оставить родной X509Certificfate2, создать объект получиться, даже сможет вернуть отпечаток сертификата и CN. Если же вы захотите явно воспользоваться открытым ключом или oid'ами сертификата, то лучше преобразовать его в CpX509Certificate2, воспользовавшись конструктором, принимающим массив байт. Более сложный путь - написать свой middleware для получения и работы с сертификатом (https://github.com/dotnet/aspnetcore/blob/f87cf09508707540491cffa66a8321e37e162766/src/Security/Authentication/Certificate/src/CertificateAuthenticationHandler.cs, https://github.com/dotne...TlsConnectionFeature.cs, и всё что между ними и работает с ними, используя везде CpX509Certificate2). Также в любом случае вам потребуется лицензия на серверный TLS для csp (СКЗИ "КриптоПро CSP" версии 5.0 для одного TLS-сервера). |
|
2 пользователей поблагодарили Артём Макаров за этот пост.
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро .NET
»
Blazor/Razor приложение, работающее по HTTPS с авторизацией по сертификату
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close