Пример #1
0
        private IServerAuthenticationCredential AuthenticateWindowsClient(SSPIClientAuthenticationCredential clientCredentials)
        {
            AuthToken clientAuthToken;

            if (clientCredentials == null || clientCredentials.Token == null)
            {
                clientCredentials = new SSPIClientAuthenticationCredential();
                clientAuthToken   = new AuthToken();
            }
            else
            {
                clientAuthToken = clientCredentials.Token;
            }
            SSPIServerAuthenticationCredential serverAuthenticationCredential = new SSPIServerAuthenticationCredential();

            serverAuthenticationCredential.Token        = new AuthToken();
            serverAuthenticationCredential.Token.Status = SecurityStatus.None;
            do
            {
                Byte[] clientToken = null;
                if (_clientSecurityContext == null)
                {
                    InitializeSecurityContext();
                }
                clientAuthToken.Status  = this._clientSecurityContext.Init(serverAuthenticationCredential.Token.Token, out clientToken);
                clientAuthToken.Token   = clientToken;
                clientCredentials.Token = clientAuthToken;

                if (clientAuthToken.Status == SecurityStatus.ContinueNeeded || (clientAuthToken.Status == SecurityStatus.OK && clientAuthToken.Token != null))
                {
                    ManagementCommand command = GetManagementCommand(ConfigurationCommandUtil.MethodName.OpenConfigurationSession, 1);
                    command.Parameters.AddParameter(clientCredentials);
                    try
                    {
                        serverAuthenticationCredential = ExecuteCommandOnMgtServer(command, true) as SSPIServerAuthenticationCredential;
                    }
                    catch (SecurityException exc)
                    {
                        if (LoggerManager.Instance.SecurityLogger != null && LoggerManager.Instance.SecurityLogger.IsErrorEnabled)
                        {
                            LoggerManager.Instance.StorageLogger.Error("Authenticating Database Server", exc.Message);
                        }
                    }
                }
                if (serverAuthenticationCredential.Token.Status == SecurityStatus.SecurityDisabled || (clientCredentials.Token.Status == SecurityStatus.OK && serverAuthenticationCredential == null))
                {
                    break;
                }
            } while (clientAuthToken.Status == SecurityStatus.ContinueNeeded);
            _clientSecurityContext = null;
            return(serverAuthenticationCredential);
        }
Пример #2
0
        private static RemoteConfigurationManager InitializeRemoteConfigurationManager(ManagementInfo managementInfo)
        {
            if (managementInfo.ConfigServerIp == null)
            {
                managementInfo.ConfigServerIp = NetworkUtil.GetLocalIPAddress().ToString();
            }

            if (managementInfo.ConfigServerPort == 0)
            {
                managementInfo.ConfigServerPort = NetworkUtil.DEFAULT_CS_HOST_PORT;
            }

            IClientAuthenticationCredential clientAuthenticationCredential = new SSPIClientAuthenticationCredential();

            var remoteConfigurationManager = new RemoteConfigurationManager();

            remoteConfigurationManager.Initilize(MiscUtil.CLUSTERED, managementInfo.ConfigServerIp, managementInfo.ConfigServerPort, new ConfigurationChannelFormatter(), clientAuthenticationCredential);

            return(remoteConfigurationManager);
        }