[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [mosquitto-dev] Accepting connection based on client's certificate | 
:-D
Yes, UNIX socket is no problem, or maybe gRPC? That could be efficient 
enough (not available in pure C, would have to be C++ submodule, could 
have C interface though), although the fork is of no big overhead given 
that there is synchronous TLS handshake (and thus many cycles between 
user space and kernel space and even sending data multiple cycles over 
wire). My measurements didn't show any significant impact of the forking 
to the number of connections per second just from the fork. It might be 
a little more secure to use a more defined protocol, though.
The plugin architecture is of course possible, but it seems a bit more 
fragile - the application code might not be as well tested as mosquitto 
server itself and a security or other vulnerability might compromise the 
whole server. So were I implement this I would choose a different 
process (fork, UNIX socket, gRPC). gRPC would be the preferred option 
for me, personally.
Jan
On 10/29/19 3:48 PM, Greg Troxel wrote:
Looking at how to have external authentication or authorization
processes, forking shell scripts seems really suboptimal.  You might
look at how dovecot makes its sasl database available to others via a
unix-domain socket.  That allows a coprocess that isn't
starting/stopping and having to read the db all the time.  This is also
sort of like the milter interface for spam/virus filtering.
More generally, it seems like a plugin architecture might eventually be needed.
(I am assuming that since you care about security so much you aren't
using Windows, and hence that unix-domain sockets are available.)