But I'll let you know if there is any problem with it.
I encountered an issue where connection pooling doesn't distinguish between Integrated Security users. I tried to fix that. Hopefully it's ship-shape.
That's true. Npgsql connection pooling uses the connectionstring as a key to the connection pool table. As the username isn't specified in the connection string, Npgsql will handle connections from different integrated security users as from the same pool.
I think your approach to freeze the user name is the best one to distinguish the connections from the pool.