On 01-07-2022 04:30, Chuck Belanger wrote:
> Thank you for your previous response. Sorry, I accidentally responded to
> you personally rather than the group.
>
> Included is that response:
>
> Thank you, Mark for the suggestions.
>
> Nothing worked.
>
> I did the following:
>
> 1. - Running the vccrt10_Win32.msi from the system32 directory of the
> zipkit. NO CHANGE
>
> 2. - Copy the msvcp100.dll and msvcr100.dll to your application
> directory NO CHANGE
>
> 3. - performing a client-only install with the 32-bit installer to see
> if that solves your problem. NO CHANGE
>
> Noted that in online doc that there was a client only option during the
> installation process, but when running the 32 bit, Windows exe
> installer, no such option was given, only "enable authorization for
> legacy firebird clients."
That is an entirely different option that is unrelated to my suggestion.
I am talking about the "Select components" window that shows the options
"Full installation [..]", "Installation of Client tools [..]", "Minimum
client install [..]" and "Custom installation", with checkboxes for
"Server components", "Developer and admin tools components", and "Client
components". (see attached screenshot of
"Firebird-3.0.10.33601_0_Win32.exe" on my machine)
However, it is possible that it is skipped for an existing install (not
sure about that).
> 4. Tried pointing to the FB 3.0.10 zip extraction, fbclient.dll and that
> worked but it was definitely in embedded mode, since any password would
> then work, including "masterkey" or the assigned password or even
> "anything."
>
> 5. As long as I was trying to connect to a remote DB (i.e. I install 64
> bit FB on the app's host system and am trying to use FBClient.dll to
> connect to the local DB), then the connection works as expected
> regarding authentication. The app has a remote authorization db that it
> connects to to make sure the user is properly registered.
>
> 6. Tried to point to the fbclient.dll in the WOW64 folder of the
> installed FB64 and even though engine12.dll is present, I get error
> "engine12.dll is present but cannot be loaded; unknown error."
If your app is 32-bit, it can't use the engine12.dll of a 64-bit
Firebird (and even if it could, it wouldn't be able to find it, because
engine12.dll would need to be in the plugin directory relative to the
fbclient.dll). However, this suggests that you're using a connection
string that prefers using embedded instead of a server connection. What
is the connection string used by your application? Does it contain only
a filename?
> Any other suggestions?
>
> Thank you!
>
> Chuck
>
> Just tried something else:
>
> It was looking to me that based on the error response and finding that
> 'masterkey' worked (and no other PW worked, unlike the embedded FB),
> that perhaps the fbclient in the app directory was trying to access a
> blank security3.fdb.
Fbclient doesn't do anything with the security database, it is the
server that checks authentication against the security database.
However, it could suggest a problem with the authentication plugin used
(e.g. your users are setup with Legacy_Auth, but after the install, you
only have Srp/Srp256 enabled, or vice versa.
So the important thing is, what are the settings in firebird.conf for
AuthServer, AuthClient, and UserManager?
To check for which authentication plugin users are created, make sure to
configure UserManager = Srp, Legacy_UserManager (and restart Firebird),
make sure to edit with elevated admin privileges. You can then execute -
as SYSDBA - select sec$user_name, sec$plugin from sec$users; to see
under which plugin your users are created.
To check which authentication plugin is used, check MON$CONNECTIONS.
> I checked and I have multiple security3.fdb files on my developer
> system. So, what I did was open the DB in IBExpert with the client
> pointing to the fbclient.dll in the app directory and then look at the
> file date that was changed in which security3.fdb.
>
> In fact it was attempting to access the installed FB 3.0 64bit
> security3.fdb, as expected, except for the "user/password not defined"
> error.
>
> To confirm, I used the exact same fbclient.dll, but pointing to the
> directory that was the expanded/unzipped Win32 3.0.10, and that DB
> required the assigned password to open. "Masterkey" did not work. And
> yes, the correct, installed FB security3.fdb was accessed as determined
> by the file date time change.
>
> So now I am really confused about what is happening here.
>
> To be clear, the user is still SYSDBA for all attempts. The fbclient.dll
> file is identical in both of the above cases, except for its directory
> location. But when in the app directory, ONLY 'masterkey' works (my
> point being that it is not acting as "embedded") and when using the
> Win32 zip of FB 3.0.10 expanded location, ONLY the assigned password
> works, as intended.
Does your application have a firebird.conf in the same directory as its
fbclient.dll? If so, what value is configured for AuthClient?
This suggests that in one situation you're authenticating with a Srp
SYSDBA (likely with a non-default password), and in the other with a
Legacy_Auth SYSDBA (with the default password).
> Any idea of what is going on here? Any other suggestions or detective
> work you may suggest? My goal is to use fbclient.dll in the app
> directory and still use another password besides 'masterkey.'
Mark
--
Mark Rotteveel