You need to include the authentification credentials in the SOAP header of your message. Savon offers the :soap_header symbol for it.
Your example could look like this:
require 'savon'
require 'securerandom'
realm = Base64.strict_encode64("ExampleUsername:ExamplePassword")
client = Savon.client(
wsdl: "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl",
soap_header: { 'Authorization:' => "Basic #{realm}"},
log: true,
log_level: debug,
pretty_print_xml: true
)
I couldn't test it this example because I lack the user credentials, but it passed "ruby -c".