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); }
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); }