/// <summary> /// Site will validate the user's local AD credentials for the cloud STS /// </summary> /// <param name="credential"></param> /// <returns></returns> public static ValidationResponse GetValidationResponse(STSCredential credential) { var data = new ValidationResponse(); data.UserName = credential.UserName; data.STSConnectionId = credential.STSConnectionId; // create a "principal context" - e.g. your domain (could be machine, too) using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, credential.Domain)) { // validate the credentials data.IsValid = pc.ValidateCredentials(credential.UserName, credential.Password, ContextOptions.Sealing); } if (data.IsValid) { data.UserProperties = ADTools.SearchName(credential.UserName); } return(data); }
public static RelayResponseInternal ProcessMessage(RelayMessage message) { RelayResponse r; RelayResponseInternal res = new RelayResponseInternal { OriginSiteId = message.OriginSiteId, OriginConnectionId = message.OriginConnectionId, RespondingSiteId = message.DestSiteId, Identifier = message.Identifier, Operation = message.Operation }; try { switch (message.Operation) { case SiteOperation.ResetPW: r = ADTools.ResetPassword(message); res.Data = r.Data; res.Success = r.Success; res.ErrorMessage = r.ErrorMessage; LogPWReset(res); return(res); case SiteOperation.TriggerPoll: r = ActivatePoll(message); res.Success = r.Success; res.ErrorMessage = r.ErrorMessage; res.Operation = SiteOperation.TriggerPoll; return(res); case SiteOperation.DisableUser: r = ADTools.EnableDisableUser(message.Data, enabled: false); res.Data = r.Data; res.Success = r.Success; res.ErrorMessage = r.ErrorMessage; return(res); case SiteOperation.EnableUser: r = ADTools.EnableDisableUser(message.Data, enabled: true); res.Data = r.Data; res.Success = r.Success; res.ErrorMessage = r.ErrorMessage; return(res); case SiteOperation.GetUserStatus: r = ADTools.GetUserStatus(message.Data); res.Data = r.Data; res.Success = r.Success; res.ErrorMessage = r.ErrorMessage; return(res); case SiteOperation.SetUserStatus: var user = Utils.ConvertDynamic <ADUser>(message.Data); r = ADTools.SetUserStatus(user); res.Data = r.Data; res.Success = r.Success; res.ErrorMessage = r.ErrorMessage; return(res); case SiteOperation.GetScriptVersion: r = GetScriptVersion(message); res.Data = r.Data; res.Success = r.Success; res.ErrorMessage = r.ErrorMessage; return(res); case SiteOperation.Ping: case SiteOperation.AddLogEntry: case SiteOperation.FireScript: res.Data = message.Data; return(res); } return(null); } catch (PrincipalException ex) { res.Success = false; res.ErrorMessage = string.Format("An error occured processing your request. {0}", ex.Message); res.Exception = ex; return(res); } catch (Exception ex) { res.Success = false; res.ErrorMessage = string.Format("An error occured processing your request. The site and sync logs will have more details."); res.Exception = ex; return(res); } }