Работает ли Firebird ADO.NET 4.10.0.0 поставщик данных с Firebird 3.0?

В настоящее время я пытаюсь подключить свой проект ASP.net 4.5 к недавно выпущенному Firebird 3.0.

Я использую Visual Studio 2015 Community Edition, Firebird 3 (64-разрядная версия) и использовал NuGet для получения ADO.NET 4.10.0.0.

Однако, когда я пытаюсь подключиться, я получаю исключение со следующим сообщением:

this.connect.ServerVersion выдал исключение типа 'System.InvalidOperationException'

Некоторые другие сообщения, которые я получаю:

Сообщение: "Соединение закрыто"
Источник: FirebirdSQL.Data.Fierbird.Client
Трассировки стека:
в FirebirdSql.Data.FirebirdClient.FbConnection.get_ServerVersion() в C:\Users\Jiri\Documents\devel\NETProvider\working\NETProvider\src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbConnection.line:

IBExpert подключается без проблем.

Эта среда ранее работала с Firebird 2.5 и более старой ADO.Net

Лучшее предположение сейчас состоит в том, что это не поддерживается, но мое исследование онлайн было неокончательным (из того, что я мог найти, были признаки того, что оно было протестировано с Firebird 3 RC1)

Если бы кто-нибудь мог указать мне правильное направление, чтобы это продолжалось, это было бы здорово.

Заранее спасибо!

1 ответ

Решение

Я отвечаю на это, предполагая, что вы установили Firebird 3 и не изменили ни одной его конфигурации. По умолчанию установка Firebird 3 будет иметь некоторые строгие настройки безопасности:

  • Он будет поддерживать только новую модель аутентификации SRP
  • Это потребует проводного протокола шифрования

Это означает, что драйверы (например, поставщик Firebird .NET 4.10), которые еще не поддерживают модель аутентификации SRP и шифрование по проводному протоколу, не смогут подключаться "из коробки".

Чтобы иметь возможность подключиться, вам нужно будет сделать следующее

  1. Включить устаревшую модель аутентификации
  2. Понизьте настройку шифрования проводного протокола с обязательного до включенного
  3. Создайте пользователя в устаревшей модели аутентификации

Все эти шаги требуют правки firebird.conf, Если вы установили Firebird в Program Files Вам нужно убедиться, что ваш редактор работает от имени администратора, чтобы иметь возможность сохранить изменения.

Включить устаревшую аутентификацию

Чтобы включить устаревшую аутентификацию, вам нужно отредактировать или добавить следующую строку в firebird.conf: (обратите внимание, что строки с префиксом # Есть комментарии!)

AuthServer = Srp, Legacy_Auth

Понизить код шифрования проводного протокола

Чтобы понизить настройки шифрования проводного протокола, вам нужно отредактировать или добавить следующую строку в firebird.conf:

WireCrypt = Enabled

Создайте устаревшего пользователя аутентификации

Чтобы иметь возможность создать пользователя в устаревшей модели аутентификации, вам нужно включить устаревший плагин usermanager, отредактировав или добавив следующую строку в firebird.conf:

UserManager = Srp, Legacy_UserManager

После внесенных выше изменений перезапустите Firebird, подключитесь к (любой) базе данных Firebird 3 с помощью вашего любимого инструмента управления базами данных с помощью SYSDBA или другой учетной записи администратора и создайте пользователя с помощью Legacy_UserManager с CREATE USER (заменить имя пользователя и пароль legacy с подходящими значениями):

CREATE USER legacy PASSWORD 'legacy' USING PLUGIN Legacy_UserManager

Обязательно совершите коммит, иначе пользователь на самом деле не создан.

Теперь вы сможете подключиться из C#, используя только что созданного пользователя.

Это также описано в примечаниях к выпуску Firebird 3, глава 12 "Проблемы совместимости, устаревшая аутентификация".

С помощью gsec или функциональность служб для создания пользователей устарела. Если вы все еще хотите использовать любой из них для создания пользователей в устаревшей модели аутентификации, вам нужно отредактировать firebird.conf и положи Legacy_UserManager первый в списке.

Поддержка в Firebird .NET провайдере версии 5.0.0.0 и выше

Обратите внимание, что в версии 5.0.0.0 поставщика Firebird .NET добавлена ​​поддержка SRP (без шифрования по проводному протоколу). Таким образом, в версии 5 поставщика Firebird .NET вы можете использовать новую модель аутентификации. Просто убедитесь, что вы понизили шифрование проводного протокола (настройка WireCrypt) от Required (по умолчанию) Enabled как описано выше.

Другие вопросы по тегам