public AuthTokenDto Authenticate(ServerDto serverDto, LoginDto loginDto, string clientId) { var tenant = Uri.EscapeDataString(loginDto.TenantName); var url = _serviceConfigManager.GetLoginUrl(serverDto, tenant); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var data = _serviceConfigManager.FormatLoginArgs(loginDto); var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders(); var result = _webRequestManager.GetResponse(url, requestConfig, headers, null, data); var token = JsonConvert.Deserialize <Token>(result); token.Raw = result; token.ClientId = clientId; token.TokenType = TokenType.Bearer.ToString(); token.Role = GetRole(token.AccessToken); var certificates = GetCertificates(serverDto, loginDto.TenantName, CertificateScope.TENANT, token); var claimsPrincipal = Validate(serverDto, loginDto.User + "@" + loginDto.DomainName, certificates[certificates.Count - 1], loginDto.TenantName, token.IdToken); if (claimsPrincipal != null) { return new AuthTokenDto(Refresh) { Token = token, ClaimsPrincipal = claimsPrincipal, Login = loginDto, ServerDto = serverDto } } ; return(new AuthTokenDto(Refresh) { Token = token, ClaimsPrincipal = claimsPrincipal, Login = loginDto, ServerDto = serverDto }); }
public AuthTokenDto Authenticate(ServerDto serverDto, LoginDto loginDto, string clientId) { var tenant = Uri.EscapeDataString(loginDto.TenantName); var url = string.Format(ServiceConfigManager.LoginEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var data = string.Format(ServiceConfigManager.LoginArguments, loginDto.User, loginDto.Pass, loginDto.DomainName, clientId); var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders(); var result = _webRequestManager.GetResponse(url, requestConfig, headers, null, data); var token = JsonConvert.Deserialize <Token>(result); token.Raw = result; token.ClientId = clientId; token.TokenType = TokenType.Bearer.ToString(); var certificates = GetCertificates(serverDto, loginDto.TenantName, CertificateScope.TENANT, token); var claimsPrincipal = Validate(serverDto, loginDto.User + "@" + loginDto.DomainName, certificates[certificates.Count - 1], loginDto.TenantName, token.IdToken); if (claimsPrincipal != null) { return new AuthTokenDto(Refresh) { Token = token, ClaimsPrincipal = claimsPrincipal, Login = loginDto, ServerDto = serverDto } } ; return(new AuthTokenDto(Refresh) { Token = token, ClaimsPrincipal = claimsPrincipal, Login = loginDto, ServerDto = serverDto }); //throw new AuthenticationException(@"Login Failure: Invalid username or password"); }
public AuthTokenDto Authenticate(ServerDto serverDto, LoginDto loginDto, string clientId) { var url = string.Format(ServiceConfigManager.SamlLegacyEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, serverDto.StsUrl + "/" + loginDto.TenantName); string soapString = XmlResourceHelper.GetResourceXml("Vmware.Tools.RestSsoAdminSnapIn.Service.xml.SAMLRequest.xml"); int lifeInSeconds = 300; var dt = DateTime.Now; dt = TimeZoneInfo.ConvertTimeToUtc(dt); var dtEnd = dt.AddSeconds(lifeInSeconds); string format = "yyyy-MM-ddTHH:mm:ss.fffZ"; var pass = WrapInCDATA(loginDto.Pass); var principalName = loginDto.User + "@" + loginDto.DomainName; soapString = string.Format(soapString, dt.ToString(format), dtEnd.ToString(format), principalName, pass, dt.ToString(format), dtEnd.ToString(format)); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; //var data = string.Format(ServiceConfigManager.LoginArguments, loginDto.User, loginDto.Pass, loginDto.DomainName, clientId); var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders("text/xml"); var customHeaders = new Dictionary <string, string>(); customHeaders.Add("SOAPAction", "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue"); var responseFromServer = _webRequestManager.GetResponse(url, requestConfig, headers, customHeaders, soapString); XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = false; using (var reader = new StringReader(responseFromServer)) doc.Load(reader); var node = doc.GetElementsByTagName("saml2:Assertion")[0]; var signature = doc.GetElementsByTagName("ds:SignatureValue")[0]; var rawToken = string.Empty; if (node != null) { rawToken = node.OuterXml; } byte[] bytes = System.Text.Encoding.UTF8.GetBytes(rawToken); rawToken = Convert.ToBase64String(bytes); var token = new Token(rawToken, serverDto.TokenType) { Raw = rawToken, ClientId = clientId, Signature = signature.InnerXml, TokenType = TokenType.SAML.ToString() }; return(new AuthTokenDto(Refresh) { Token = token, ClaimsPrincipal = null, Login = loginDto, ServerDto = serverDto }); throw new Exception(responseFromServer); }
public bool Start(ServerDto server, string tenant, Token token, int size = 500) { var url = string.Format(_serviceConfigManager.GetStartEventLogPostEndPoint(), server.Protocol, server.ServerName, server.Port, tenant, size); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders(ServiceConstants.JsonContentType); var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower(); var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData); return(string.IsNullOrEmpty(response)); }
public ActiveDirectoryJoinInfoDto GetActiveDirectory(ServerDto server, Token token) { var url = string.Format(_serviceConfigManager.GetPostAdfEndPoint(), server.Protocol, server.ServerName, server.Port); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders(ServiceConstants.JsonContentType); var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower(); var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData); return(JsonConvert.Deserialize <ActiveDirectoryJoinInfoDto>(response)); }
public List <RelyingPartyDto> GetAll(ServerDto serverDto, string tenant, Token token) { tenant = Uri.EscapeDataString(tenant); var url = string.Format(ServiceConfigManager.GetRelyingPartysPostEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType); var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower(); var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData); return(JsonConvert.Deserialize <List <RelyingPartyDto> >(response)); }
public ServerInfoDto GetServerInfo(ServerDto server, Token token) { var url = string.Format(_serviceConfigManager.GetServerAboutInfoEndPoint(), server.Protocol, server.ServerName, server.Port); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Get, }; var headers = ServiceHelper.AddHeaders(ServiceConstants.JsonContentType); headers.Add(HttpRequestHeader.Authorization, "Bearer " + token.AccessToken); var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, null); var serverInfo = JsonConvert.Deserialize <ServerInfoDto>(response); return(serverInfo); }
public bool Delete(ServerDto serverDto, string tenant, OidcClientDto oidcClientDto, Token token) { tenant = Uri.EscapeDataString(tenant); var clientId = Uri.EscapeDataString(oidcClientDto.ClientId); var url = string.Format(_serviceConfigManager.GetOidcClientEndPoint(), serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, clientId); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Delete, }; var headers = ServiceHelper.AddHeaders(ServiceConstants.JsonContentType); var json = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower(); var result = _webRequestManager.GetResponse(url, requestConfig, headers, null, json); return(string.IsNullOrEmpty(result)); }
public IList <ComputerDto> GetComputers(ServerDto server, Token token) { var url = string.Format(ServiceConfigManager.GetServerComputersPostEndPoint, server.Protocol, server.ServerName, server.Port); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType); var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower(); var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData); var computers = JsonConvert.Deserialize <List <ComputerDto> >(response); return(computers.Select(computer => new ComputerDto { DomainController = computer.DomainController, HostName = computer.HostName }).ToList()); }
public SolutionUserDto Create(ServerDto serverDto, string tenantName, SolutionUserDto userDto, Token token) { tenantName = Uri.EscapeDataString(tenantName); var name = Uri.EscapeDataString(userDto.Name); var url = string.Format(ServiceConfigManager.SolutionUsersEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenantName, name); var json = JsonConvert.Serialize(userDto); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Post }; var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType); json = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower() + "&" + json; var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json); return(JsonConvert.Deserialize <SolutionUserDto>(response)); }
public List <ExternalIdentityProviderDto> GetAll(ServerDto serverDto, string tenantName, Token token) { tenantName = Uri.EscapeDataString(tenantName); var url = string.Format(ServiceConfigManager.GetExternalIdentityProvidersPostEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenantName); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Post, }; var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType); var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower(); var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData); response = CleanupJson(response); var dto = typeof(IdentityProviderDto).Assembly; return(JsonConvert.Deserialize <List <ExternalIdentityProviderDto> >(response, "root", dto.GetTypes(), true)); }
public string Delete(ServerDto serverDto, string tenantName, UserDto user, Token token) { var name = Uri.EscapeDataString(user.Name + "@" + user.Domain); tenantName = Uri.EscapeDataString(tenantName); var url = string.Format(ServiceConfigManager.UserEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenantName, name); ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; var requestConfig = new RequestSettings { Method = HttpMethod.Delete, }; var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType); var json = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower(); return(_webRequestManager.GetResponse(url, requestConfig, headers, null, json)); }