GSF.ServiceProcess.ServiceHelper.VerifySecurity C# (CSharp) Method

VerifySecurity() private method

private VerifySecurity ( ClientInfo client ) : bool
client ClientInfo
return bool
        private bool VerifySecurity(ClientInfo client)
        {
            if ((object)client == null)
                throw new ArgumentNullException(nameof(client));

            // Set current thread principal to remote client's user principal.
            if (!(Thread.CurrentPrincipal is WindowsPrincipal) && (object)client.ClientUser != null)
                Thread.CurrentPrincipal = client.ClientUser;

            // Retrieve previously initialized security provider of the remote client's user.
            SecurityProviderCache.ValidateCurrentProvider();

            // Initialize security provider for the remote client's user from specified credentials.
            if ((!Thread.CurrentPrincipal.Identity.IsAuthenticated || (object)client.ClientUser == null) && !string.IsNullOrEmpty(client.ClientUserCredentials))
            {
                string[] credentialParts = client.ClientUserCredentials.Split(':');

                if (credentialParts.Length == 2)
                {
                    ISecurityProvider provider = SecurityProviderUtility.CreateProvider(credentialParts[0]);

                    if (provider.Authenticate(credentialParts[1]))
                        SecurityProviderCache.CurrentProvider = provider;
                }
            }

            // Save the initialized security provider of remote client's user for subsequent uses.
            if (client.ClientUser != Thread.CurrentPrincipal)
                client.SetClientUser(Thread.CurrentPrincipal);

            return (object)client.ClientUser != null && client.ClientUser.Identity.IsAuthenticated;
        }
ServiceHelper