From 844dab8c1ba2d58a65f4f214eaacb4b0564d40d2 Mon Sep 17 00:00:00 2001 From: Tom Plant Date: Sat, 14 Jun 2025 21:08:12 +1000 Subject: [PATCH] Support generic OAuth for non-HTTP hosts Non-HTTP hosts can support OAuth using absolute authorize/token endpoints, like Outlook.com SMTP. Example: ``` [sendemail] smtpServer = smtp-mail.outlook.com smtpUser = example@outlook.com smtpEncryption = tls smtpServerPort = 587 smtpAuth = XOAUTH2 [credential "smtp://smtp-mail.outlook.com:587"] oauthClientId = a95fbac5-cbbb-4032-b10d-fb756c457ba1 oauthAuthorizeEndpoint = https://login.microsoftonline.com/common/oauth2/v2.0/authorize oauthTokenEndpoint = https://login.microsoftonline.com/common/oauth2/v2.0/token oauthScopes = offline_access https://outlook.office.com/SMTP.Send ``` --- src/shared/Core/GenericHostProvider.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/shared/Core/GenericHostProvider.cs b/src/shared/Core/GenericHostProvider.cs index 9f087ca5b..19388b790 100644 --- a/src/shared/Core/GenericHostProvider.cs +++ b/src/shared/Core/GenericHostProvider.cs @@ -67,14 +67,8 @@ public override async Task GenerateCredentialAsync(InputArguments i Uri uri = input.GetRemoteUri(); - // Determine the if the host supports Windows Integration Authentication (WIA) or OAuth - if (!StringComparer.OrdinalIgnoreCase.Equals(uri.Scheme, "http") && - !StringComparer.OrdinalIgnoreCase.Equals(uri.Scheme, "https")) - { - // Cannot check WIA or OAuth support for non-HTTP based protocols - } // Check for an OAuth configuration for this remote - else if (GenericOAuthConfig.TryGet(Context.Trace, Context.Settings, input, out GenericOAuthConfig oauthConfig)) + if (GenericOAuthConfig.TryGet(Context.Trace, Context.Settings, input, out GenericOAuthConfig oauthConfig)) { Context.Trace.WriteLine($"Found generic OAuth configuration for '{uri}':"); Context.Trace.WriteLine($"\tAuthzEndpoint = {oauthConfig.Endpoints.AuthorizationEndpoint}");