C# FirebirdSql.Data.FirebirdClient与Sysdba以外的用户连接-未定义用户名和密码

C# FirebirdSql.Data.FirebirdClient与Sysdba以外的用户连接-未定义用户名和密码,c#,.net,firebird,firebird-3.0,firebird-.net-provider,C#,.net,Firebird,Firebird 3.0,Firebird .net Provider,我使用FirebirdSql.Data.FirebirdClient连接到Firebird数据库(WPF桌面应用程序) 服务器版本:WI-V3.0.5.33220 Firebird 3.0,ADO.net提供程序版本为7.5.0(NuGet) 我创建了一个除SYSDBA之外的用户,该用户只对表具有只读访问权限(仅选择)。与FlameRobin的连接对于这个新用户来说没有问题。但是,当我在FbConnectionStringBuilder类中指定这个新用户和相应的只读角色时,我得到一个 “您的用户

我使用FirebirdSql.Data.FirebirdClient连接到Firebird数据库(WPF桌面应用程序)


服务器版本:WI-V3.0.5.33220 Firebird 3.0,ADO.net提供程序版本为7.5.0(NuGet)

我创建了一个除SYSDBA之外的用户,该用户只对表具有只读访问权限(仅选择)。与FlameRobin的连接对于这个新用户来说没有问题。但是,当我在FbConnectionStringBuilder类中指定这个新用户和相应的只读角色时,我得到一个

“您的用户名和密码未定义”

错误。如果我用SYSDBA和相应的密码替换新用户,连接就会工作

using FirebirdSql.Data.FirebirdClient;

namespace Test
{
    class DBConnection
    {
        FbConnection fbConnection;
        public void CreateConnection() 
        {
            FbConnectionStringBuilder builder = new FbConnectionStringBuilder();
            builder.Charset = "WIN1252";
            builder.Database = "firebird2:DB_NAME";
            builder.Dialect = 3;
            builder.Role = "READ_ONLY_OTN";
            builder.UserID = "TEST";
            builder.Password = "Test";
            builder.ServerType = FbServerType.Default;
            fbConnection = new FbConnection(builder.ConnectionString);
            fbConnection.Open();
        }
    }
}

除了错误的密码(我用FlameRobin检查了两次)之外,还有什么原因导致此错误?

问题是,当连接到Firebird 3时,Firebird ADO.net提供程序(FirebirdSql.Data.FirebirdClient)只支持新的SRP身份验证插件,而不支持旧的\u Auth身份验证插件。如果您的用户是使用Legacy_UserManager创建的,则无法使用Firebird ADO.net提供程序进行身份验证。您需要使用Srp创建用户

根据确切的Firebird配置,您需要将
Srp
添加到
UserManager
配置列表中,然后使用以下内容创建用户:

使用插件srp创建用户密码“”;
出于安全原因,我建议您删除使用Legacy_UserManager创建的用户:

使用pluginlegacy\u usermanager删除用户;

我还建议您从
UserManager
列表中删除
Legacy\u UserManager
,或者确保
Srp
在列表中处于第一位,以避免意外创建具有不太安全的用户管理器的用户(在不使用plugin子句的情况下执行SQL用户管理语句将默认为列表中的第一个用户管理器)。

您的Firebird版本是什么,Firebird ADO.net提供程序版本是什么?服务器版本:WI-V3.0.5.33220 Firebird 3.0,ADO.net提供程序版本是7.5.0(NuGet)。FB3有几个版本“身份验证插件”-用户/密码字典“。您可能在其中一个中创建了used,并尝试与另一个连接。尝试在这两个中创建新用户,或以某种方式调整.Net Provider以使用FlameRobin使用的相同身份验证插件。另请参阅上的支持链接当连接为SYSDBA时,
选择sec$user\u name,sec$plugin from sec$users
(专门针对您尝试在应用程序中使用的用户)?在
firebird.conf
中,
AuthServer
UserManager
的设置是什么?@markrotveel但是.Net提供者会检查firebird.conf以获得该设置吗?如果是,那么它会在哪里查找它?我猜要拉的线程与.Net app和FlameRobin的行为不同