func getAuthProvider(cfg *config.Info) (auth.Provider, error) {
	var prv auth.Provider
	switch cfg.Oauth.Provider {
	case google.Name, "":
		prv = google.Provider
	case okta.Name:
		prv = okta.Provider
	case mailchimp.Name:
		prv = mailchimp.Provider
	default:
		return nil, fmt.Errorf("invalid oauth provider: %s", cfg.Oauth.Provider)
	}
	if err := prv.Validate(cfg); err != nil {
		return nil, err
	}
	return prv, nil
}
getAuthProvider returns the auth.Provider that was configured in the config info.
package main
import (
	"bytes"
	"crypto/rand"
	"crypto/tls"
	"crypto/x509"
	"encoding/pem"
	"flag"
	"fmt"
	"io"
	"io/ioutil"
	"net"
	"net/http"
	"os"
	"strings"
	"github.com/kellegous/underpants/auth"
	"github.com/kellegous/underpants/auth/google"
	"github.com/kellegous/underpants/auth/mailchimp"
	"github.com/kellegous/underpants/auth/okta"
	"github.com/kellegous/underpants/config"
	"github.com/kellegous/underpants/hub"
	"github.com/kellegous/underpants/mux"
	"github.com/kellegous/underpants/proxy"
	"go.uber.org/zap"
	"golang.org/x/crypto/ssh/terminal"
)