Alterar o Middleware de autenticação OWIN por solicitação (multilocatário, chaves de API oauth por inquilino)

Eu tenho um aplicativo multilocatário. Cada inquilino pode autenticar seus usuários usando o OAUTH-2 no Facebook, Twitter, Google etc. Cada inquilino possui suas próprias chaves de API para os serviços mencionados acima.

A maneira típica de configurar o pipeline OWIN é "usar" provedores de autenticação na Inicialização, mas isso define as chaves da API no início do aplicativo. Eu preciso poder alterar quais chaves são usadas com cada API oauth para cada solicitação.

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            Provider = cookieAuthProvider,
            CookieName = "VarsityAuth",
        });

        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

        app.UseMicrosoftAccountAuthentication(
            clientId: "lkjhlkjkl",
            clientSecret: "kjhjkk");

Preciso alterar essas configurações por solicitação com base no inquilino. Como posso fazer isso?

questionAnswers(1)

yourAnswerToTheQuestion