[RADIATOR] AuthBy DUO issue

Heikki Vatiainen hvn at open.com.au
Fri Jun 11 11:42:01 UTC 2021

On 8.6.2021 15.06, Alexander.Hartmaier at t-systems.com wrote:
>> I think this is a good explanation what I think might be happening with
>> [1] below.
>> https://wiki.openssl.org/index.php/TLS1.3#Non-application_data_records 

> That makes sense!
> But when OpenSSL receives and reads that data, shouldn't the socket stop 
> reporting available data?

I'd say what happens is that when the module reads the socket and 
OpenSSL machinery is rotated consuming all input from the socket, there 
is no user data left and read for user data does not return until some 
is left. That would be when a response comes from DUO. Or something 
similar is happening. I think OpenSSL does not support returning zero 
length data.

It's not doing a busy loop trying to read the socket, so it seems to 
block somehow.

It might be that the assumption in the module is that when a socket is 
readable after TLS handshake, it means that there's data or the 
connection was closed. It may not be prepared for nothing but a 
handshake message.

Caution: I haven't yet looked into this in detail.

> What is your plan to fix this issue?

One option is to select only TLSv1.2 by default and make it 
configurable. If the problem is with Net::HTTPS::NB or HTTP::Async, 
allow by default TLSv1.3 when a working version of this/those is detected.

> Will you provide a patch for HTTP::Async or migrate AuthDUO.pm to for 
> example AuthREST.pm?

HTTP::Async and/or Net::HTTPS::NB would need a fix for current 
installations. The AuthREST.pm, actually DUO AuthBy built on top of 
HTTPClient.pm is something we have considered too. We now have HTTP 
client support for exactly these kinds of things.

Thanks again for following up on how it goes now.

>> [1] 
>> https://metacpan.org/release/HTTP-Async/source/lib/HTTP/Async.pm#L551 
> <https://metacpan.org/release/HTTP-Async/source/lib/HTTP/Async.pm#L551>

Heikki Vatiainen <hvn at open.com.au>

Radiator: the most portable, flexible and configurable RADIUS server
anywhere. SQL, proxy, DBM, files, LDAP, TACACS+, PAM, Active Directory,
DIAMETER etc. Full source on Unix, Windows, MacOSX, Solaris, VMS, etc.

More information about the radiator mailing list