Пример #1
0
        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
            });
        }
Пример #2
0
        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");
        }
Пример #3
0
        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);
        }
Пример #4
0
        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));
        }
Пример #5
0
        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));
        }
Пример #6
0
        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));
        }
Пример #7
0
        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);
        }
Пример #8
0
        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));
        }
Пример #9
0
        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());
        }
Пример #10
0
        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));
        }
Пример #12
0
        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));
        }