private static KustoConnectionStringBuilder GetKcsbWithAuthentication()

in src/Serilog.Sinks.AzureDataExplorer/Extensions/AzureDataExplorerSinkOptionsExtensions.cs [41:90]


        private static KustoConnectionStringBuilder GetKcsbWithAuthentication(KustoConnectionStringBuilder kcsb,
            AzureDataExplorerSinkOptions options)
        {
            switch (options.AuthenticationMode)
            {
                case AuthenticationMode.AadApplicationCertificate:
                    kcsb = kcsb.WithAadApplicationCertificateAuthentication(options.ApplicationClientId,
                        options.ApplicationCertificate, options.Authority, options.SendX5C, options.AzureRegion);
                    break;
                case AuthenticationMode.AadApplicationKey:
                    kcsb = kcsb.WithAadApplicationKeyAuthentication(options.ApplicationClientId, options.ApplicationKey,
                        options.Authority);
                    break;
                case AuthenticationMode.AadApplicationSubjectName:
                    kcsb = kcsb.WithAadApplicationSubjectNameAuthentication(options.ApplicationClientId,
                        options.ApplicationCertificateSubjectDistinguishedName, options.Authority, options.AzureRegion);
                    break;
                case AuthenticationMode.AadApplicationThumbprint:
                    kcsb = kcsb.WithAadApplicationThumbprintAuthentication(options.ApplicationClientId,
                        options.ApplicationCertificateThumbprint, options.Authority);
                    break;
                case AuthenticationMode.AadApplicationToken:
                    kcsb = kcsb.WithAadApplicationTokenAuthentication(options.ApplicationToken);
                    break;
                case AuthenticationMode.AadAzureTokenCredentials:
                    kcsb = kcsb.WithAadAzureTokenCredentialsAuthentication(options.TokenCredential);
                    break;
                case AuthenticationMode.AadUserToken:
                    kcsb = kcsb.WithAadUserTokenAuthentication(options.UserToken);
                    break;
                case AuthenticationMode.AadSystemManagedIdentity:
                    kcsb = kcsb.WithAadSystemManagedIdentity();
                    break;
                case AuthenticationMode.AadUserManagedIdentity:
                    kcsb = kcsb.WithAadUserManagedIdentity(options.ApplicationClientId);
                    break;
                case AuthenticationMode.AadWorkloadIdentity:
                    kcsb = kcsb.WithAadAzureTokenCredentialsAuthentication(new WorkloadIdentityCredential());
                    break;
                case AuthenticationMode.AadUserPrompt:
                default:
                    kcsb = kcsb.WithAadAzureTokenCredentialsAuthentication(new ChainedTokenCredential(new AzureCliCredential(), new InteractiveBrowserCredential()));
                    break;
            }

            kcsb.ApplicationNameForTracing = AppName;
            kcsb.ClientVersionForTracing = ClientVersion;
            kcsb.SetConnectorDetails(AppName, ClientVersion, "Serilog", "4.0.0");
            return kcsb;
        }