On 09/17/18 15:45, Mark Rotteveel wrote:
On 16-9-2018 17:28, Mark Rotteveel wrote:
I think you should probably post this to the Firebird .net provider
mailing list. The problem seems to be that case-sensitive user names
need to be correctly supported by the client.
And in the case of Firebird.net provider (and Jaybird for that
matter), for example the SRP implementation will always upper case
the username, which makes the SRP proof for a case sensitive user
name fail.
The thing that needs to be addressed here that - in my opinion- this
is a problem that is caused by lack of proper low-level documentation.
Exactly how are case sensitive usernames supposed to be handled? I
have done some searching in the Firebird sources, and I'm not sure if
I found all relevant parts, but as far as I can tell:
- isc_dpb_user_name : pass username in double quotes from client to
server (and same for spb)
- CNCT_login : pass username in double quotes
- SRP client: If enclosed in double quotes: strip quotes and use as
is, if enclosed in single quotes, strip quotes and uppercase, if
unquoted, uppercase.
Is this correct? Or are am I missing something?
Actual job is done by fb_utils::dpbItemUpper. This function has one
'funny' feature - in almost all cases (exception is support of dialect-1
roles) this function should be invoked for each dpb item once & only
once. And itr's not invoked by SRP plugin (you call it SRP client?) -
that's done for all plugins when preparing client authentication block
for plugins, it's ClntAuthBlock::loadClnt function. Except call to this
function username is always passed 'as is' - if it was in double quotes
it remains such, it's never uppercased except in dpbItemUpper.
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel