In this article, we have demonstrated how you can connect to SharePoint On-premises, Online, and Extranet using C# code. We have provided easy and ready to use code that you can directly utilize in your program.
Connect to SharePoint environment using C#
Here, we have provided a single class file which takes Site URL, Username, Password, and Environment as parameters and based on these details, it authenticates the user and gives context object which can be used to access various SharePoint objects using C# code.
We have provided comments wherever is needed which makes the code self-explanatory.
You can also check some very useful operations using C# code in SharePoint which you can be utilized after the authentication method provided here.
Create Console application in Visual Studio
- Open Visual Studio. I have used Visual Studio 2017. This can also work in the older version.
- Create a New Project. I have used .Net Framework 4.6.1 and have created Console Application as shown in the screenshot below
 
- Below are the references added to the project.Microsoft.SharePoint.Client;Microsoft.SharePoint.Client.Runtime;
- Entire Program.cs file is copied below. You can use it as it is and your code should work. 
 - 
            using 
            System;
- 
            using 
            System.Linq;
- 
            using 
            System.Security;
- 
            using 
            System.Net;
- 
            using 
            Microsoft.SharePoint.Client;
- 
            
             
- 
            
            namespace CSOMAuthentication
- 
            {
- 
            
                
            class 
            
            Program
- 
            
                {
- 
            
                    
            static
            void Main(string[] 
            args)
- 
            
                    
            {
- 
            
                       
            // Provide Site URL
- 
            
                       
            string 
            SiteURL = "SiteURL";
- 
            
             
- 
            
                       
            // Provide the environment in which the site resides. One of the below options.
- 
            
                       
            // (i) onpremises 
            (ii) o365 (iii) extranet
- 
            
                       
            string 
            Environmentvalue = 
            "o365";
- 
            
                       
            string 
            username = "UserName";
- 
            
                       
            string 
            password = "Password";
- 
            
                       
            AuthenticateUser(new
            Uri(SiteURL), 
            Environmentvalue, username, password);
- 
            
                    
            }
- 
            
             
- 
            
                    
            private
            static
            void 
            AuthenticateUser(Uri 
            TargetSiteUrl, 
            string Environmentvalue, string 
            username, string 
            password)
- 
            
                    
            {
- 
            
                       
            try
- 
            
                       
            {
- 
            
                           
            // Based on the 
            environmentvalue provided it execute the function.
- 
            
                           
            if (string.Compare(Environmentvalue,
            "onpremises",
            StringComparison.OrdinalIgnoreCase) 
            == 0)
- 
            
                           
            {
- 
            
                               
            ClientContext 
            Context = LogOn(username, password, TargetSiteUrl);
- 
            
                               
            // isAuthenticated 
            = true;
- 
            
                                
            // You can write 
            additional methods here which you want to use after authentication
- 
            
                           
            }
- 
            
                           
            else
            if (string.Compare(Environmentvalue,
            "o365",
            StringComparison.OrdinalIgnoreCase) 
            == 0)
- 
            
                           
            {
- 
            
                               
            ClientContext 
            Context = O365LogOn(username, password, TargetSiteUrl);
- 
            
                               
            // isAuthenticated 
            = true;
- 
            
                                
            // You can write 
            additional methods here which you want to use after authentication
- 
            
                           
            }
- 
            
                           
            else
            if (string.Compare(Environmentvalue,
            "extranet",
            StringComparison.OrdinalIgnoreCase) 
            == 0)
- 
            
                           
            {
- 
            
                               
            ClientContext 
            Context = ExtranetLogOn(username, password, TargetSiteUrl);
- 
            
                               
            // isAuthenticated 
            = true;
- 
            
                                
            // You can write 
            additional methods here which you want to use after authentication
- 
            
                           
            }
- 
            
                       
            }
- 
            
                       
            catch (Exception ex)
- 
            
                       
            {
- 
            
                           
            // log error               
            
        
- 
            
                       
            }
- 
            
                    
            }
- 
            
             
- 
            
                    
            private
            static
            ClientContext 
            LogOn(string 
            userName, string 
            password, Uri url)
- 
            
                    
            {
- 
            
                       
            ClientContext 
            clientContext = 
            null;
- 
            
                       
            ClientContext ctx;
- 
            
                       
            try
- 
            
                       
            {
- 
            
                           
            clientContext = new
            ClientContext(url);
- 
            
             
- 
            
                           
            // Condition to 
            check whether the user name is null or empty.
- 
            
                           
            if (!string.IsNullOrEmpty(userName) 
            && !string.IsNullOrEmpty(password))
- 
            
                           
            {
- 
            
                               
            SecureString 
            securestring = 
            new 
            SecureString();
- 
            
                               
            password.ToCharArray().ToList().ForEach(s => securestring.AppendChar(s));
- 
            
                               
            clientContext.Credentials = new 
            System.Net.NetworkCredential(userName, securestring);
- 
            
                               
            clientContext.ExecuteQuery();
- 
            
                           
            }
- 
            
                           
            else
- 
            
                           
            {
- 
            
                               
            clientContext.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
- 
            
                               
            clientContext.ExecuteQuery();
- 
            
                           
            }
- 
            
             
- 
            
                           
            ctx = clientContext;
- 
            
                       
            }
- 
            
                       
            finally
- 
            
                       
            {
- 
            
                           
            if 
            (clientContext != 
            null)
- 
            
                           
            {
- 
            
                               
            clientContext.Dispose();
- 
            
                           
            }
- 
            
                       
            }
- 
            
             
- 
            
                       
            return ctx;
- 
            
                    
            }
- 
            
             
- 
            
                    
            private
            static
            ClientContext 
            O365LogOn(string 
            userName, string 
            password, Uri url)
- 
            
                    
            {
- 
            
                        ClientContext 
            clientContext = 
            null;
- 
            
                       
            ClientContext ctx =
            null;
- 
            
                       
            try
- 
            
                       
            {
- 
            
                           
            clientContext = new
            ClientContext(url);
- 
            
             
- 
            
                           
            // Condition to 
            check whether the user name is null or empty.
- 
            
                            if (!string.IsNullOrEmpty(userName) 
            && !string.IsNullOrEmpty(password))
- 
            
                           
            {
- 
            
                               
            SecureString 
            securestring = 
            new 
            SecureString();
- 
            
                               
            password.ToCharArray().ToList().ForEach(s => securestring.AppendChar(s));
- 
            
                               
            clientContext.Credentials = new
            
            SharePointOnlineCredentials(userName, 
            securestring);
- 
            
                               
            clientContext.ExecuteQuery();
- 
            
                           
            }
- 
            
                           
            else
- 
            
                           
            {
- 
            
                               
            clientContext.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
- 
            
                               
            clientContext.ExecuteQuery();
- 
            
                           
            }
- 
            
                           
            ctx = clientContext;
- 
            
                       
            }
- 
            
                       
            finally
- 
            
                       
            {
- 
            
                           
            if 
            (clientContext != 
            null)
- 
            
                           
            {
- 
            
                               
            clientContext.Dispose();
- 
            
                           
            }
- 
            
                       
            }
- 
            
                       
            return ctx;
- 
            
                    
            }
- 
            
             
- 
            
                    
            private
            static
            ClientContext 
            ExtranetLogOn(string userName, 
            string password, 
            
            Uri url)
- 
            
                    
            {
- 
            
                       
            ClientContext 
            clientContext = 
            null;
- 
            
                       
            ClientContext ctx;
- 
            
                       
            try
- 
            
                       
            {
- 
            
                           
            clientContext = new
            ClientContext(url);
- 
            
             
- 
            
                           
            // Condition to 
            check whether the user name is null or empty.
- 
            
                           
            if (!string.IsNullOrEmpty(userName))
- 
            
                           
            {
- 
            
                               
            NetworkCredential 
            networkCredential = 
            new 
            NetworkCredential(userName, 
            password);
- 
            
                               
            CredentialCache cc =
            new
            CredentialCache();
- 
            
                               
            cc.Add(url, "NTLM", 
            networkCredential);
- 
            
                               
            clientContext.Credentials = cc;
- 
            
                               
            clientContext.ExecuteQuery();
- 
            
                           
            }
- 
            
                           
            else
- 
            
                           
            {
- 
            
                               
            CredentialCache cc =
            new
            CredentialCache();
- 
            
                         
                   cc.Add(url, "NTLM", 
            System.Net.CredentialCache.DefaultNetworkCredentials);
- 
            
                               
            clientContext.Credentials = cc;
- 
            
                               
            clientContext.ExecuteQuery();
- 
            
                           
            }
- 
            
                           
            ctx = clientContext;
- 
            
                       
            }
- 
            
                        finally
- 
            
                       
            {
- 
            
                           
            if 
            (clientContext != 
            null)
- 
            
                           
            {
- 
            
                               
            clientContext.Dispose();
- 
            
                           
            }
- 
            
                       
            }
- 
            
                       
            return ctx;
- 
            
                    
            }
- 
            
                }
- 
            }
 
Apart from using C# to interact with SharePoint, you can also leverage JavaScript Object Model, REST-API and PnP PowerShell examples as well.
Conclusion:
We went through a very useful piece of code to check whether a particular user is authenticated or not against provided Site URL and environment.