On Fri, Aug 11, 2017 at 9:31 PM, Álvaro Hernández Tortosa <a...@8kdata.com> wrote: > On 11/08/17 13:18, Michael Paquier wrote: >> On Fri, Aug 11, 2017 at 3:50 PM, Álvaro Hernández Tortosa >> <a...@8kdata.com> wrote: >>>> Relatedly, the SCRAM specification doesn't appear to allow omitting the >>>> user name in this manner. Why don't we just send the actual user name, >>>> even though it's redundant with the startup message? >> >> The problem is where a username includes characters as a comma or '=', >> which can be avoided if the string is in UTF-8 as the username is >> prepared with SASLprep before being used in the SASL exchange, but we >> have no way now to be sure now that the string is actually in UTF-8. >> If at some point we decide that only things using UTF-8 are good to be >> used during authentication, using the username in the exchange >> messages instead of the one in the startup packet would be fine and >> actually better IMO in the long term. Please note that the >> specification says that both the username and the password must be >> encoded in UTF-8, so we are not completely compliant here. If there is >> something to address, that would be this part. > > The reason why the username is ignored, unless I'm wrong, is not exactly > that it is already sent. It is that Postgres does not restrict usernames to > be UTF-8 only, while SCRAM does. As such, if a username would not be UTF-8, > it will not be sent reliably over SCRAM.
That's basically the point I was making. Note that I would not be against Postgres forcing strings to be in UTF-8. Now things are fuzzy because of the lack of restrictions. >>> If there's a clear meaning about ignoring the user here, why not >>> settle >>> on something like the "*"? It's not going to change the world sending a >>> few >>> bytes less on initialization, but I guess it doesn't hurt either... >> >> I am not sure either that '*' would be that much helpful. Requiring >> that things are in UTF-8 would be more compliant with the original >> RFC. > > But we really don't need to send the username, since Postgres already > knows it (and that accommodates for non UTF-8 usernames). So why bother? > Just sending something like "*" (which is UTF-8 and produces the same value > under Saslprep) should be enough. I think the idea of ignoring the username > is pretty neat, but maybe a "standard" like "send me an asterisk here" could > be even better than leaving it empty. Personally I don't see much difference between both, so I'd rather leave things as they are now. -- Michael -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers