I tracked down the problem fixing the proc ConnectionContext into the file tcl/context-procs.tcl of xotcl-core.
If the user_id of the connection was 0 (i.e. not logged in), the proc invoked the registration page via auth::require_login. I forced instead party_id to -1 (The public) so giving to all subsequent permission checks a valid party_id and requiring login only when necessary.