Пример #1
0
		public TenantNode(ServerDto serverDto, string tenantName)
		{
			_serverDto = serverDto;
			_tenantName = tenantName;
			Active = true;
			IsSystemTenant = false;
		}
Пример #2
0
		public ServerNode (ServerDto dto)
		{
			_serverDto = dto;
			this.DisplayName = dto.ServerName;
			Tag = new AuthTokenDto { ServerDto = dto };
			notificationObject = NSNotificationCenter.DefaultCenter.AddObserver ((NSString)"CloseApplication", OnCloseConnectionNotificationReceived);
		}
Пример #3
0
		public SolutionUsersNode(ServerDto serverDto, string tenantName, string name, bool systemDomain)
		{
			_domainName = name;
			_systemDomain = systemDomain;
			_serverDto = serverDto;
			_tenantName = tenantName;
			DisplayName = "Solution Users";
		}
Пример #4
0
		public GroupsNode(ServerDto dto, string tenantName, string domainName, bool systemDomain)
		{
			_tenantName = tenantName;
			_isSystemDomain = systemDomain;
			_serverDto = dto;
			_domainName = domainName;            
			DisplayName = "Groups";
		}
 public AuthTokenDto Login(ServerDto serverDto, LoginDto loginDto, string clientId)
 {
     IAuthenticationService tokenService = null;
     if(serverDto.TokenType == TokenType.SAML) 
         tokenService = new SamlTokenService(_webRequestManager);
     else 
         tokenService = new JwtTokenService(_webRequestManager);
     return tokenService.Authenticate(serverDto, loginDto, clientId);
 }
Пример #6
0
		public UsersNode(ServerDto dto, string tenantName, string domainName, bool systemDomain)
		{
			_serverDto = dto;
			_tenantName = tenantName;
			_domainName = domainName;
			_systemDomain = tenantName;
			_isSystemDomain = systemDomain;
			DisplayName = "Users";
		}
Пример #7
0
		public UsersAndGroupsNode (ServerDto dto, string tenantName, IdentityProviderDto provider, bool systemDomain)
		{
			_tenantName = tenantName;
			_domainName = provider.Name;
			_systemDomain = systemDomain;
			_serverDto = dto;
			DisplayName = "Users and Groups";
			Refresh (this, EventArgs.Empty);
		}
 public Token Refresh(ServerDto serverDto, LoginDto loginDto, Token tokenToRefresh)
 {
     IAuthenticationService tokenService = null;
     if (serverDto.TokenType == TokenType.SAML)
         tokenService = new SamlTokenService(_webRequestManager);
     else
         tokenService = new JwtTokenService(_webRequestManager);
     return tokenService.Refresh(serverDto, loginDto, tokenToRefresh);
 }        
 public bool Delete(ServerDto serverDto, string tenant, ExternalIdentityProviderDto externalIdentityProvider, Token token)
 {
     var url = string.Format(ServiceConfigManager.ExternalIdentityProviderEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, externalIdentityProvider.EntityID);
     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();
     var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json);
     return string.IsNullOrEmpty(response);
 }
Пример #10
0
 public string GetStatus(ServerDto server, Token token)
 {
     var url = string.Format(ServiceConfigManager.GetServerStatusPostEndPoint, server.Protocol, server.ServerName, server.Port);
     ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
     var requestConfig = new RequestSettings
     {
         Method = HttpMethod.Post,
     };
     var headers = ServiceHelper.AddHeaders();
     var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower();
     var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData);
     return response;
 }
Пример #11
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();
 }
Пример #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);
 }
 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);
     return JsonConvert.Deserialize<List<ExternalIdentityProviderDto>>(response, true);
 }
Пример #14
0
 public OidcClientDto Get(ServerDto serverDto, string tenant, OidcClientDto oidcClientDto, Token token)
 {
     tenant = Uri.EscapeDataString(tenant);
     var clientId = Uri.EscapeDataString(oidcClientDto.ClientId);
     var url = string.Format(ServiceConfigManager.OidcClientPostEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, clientId);
     ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
     var requestConfig = new RequestSettings
     {
         Method = HttpMethod.Post,
     };
     var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType);
     var json = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower();
     var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json);
     return JsonConvert.Deserialize<OidcClientDto>(response);
 }
Пример #15
0
		public bool Delete(ServerDto serverDto, string tenant, GroupDto groupDto, Token token)
		{
			var principalName = Uri.EscapeDataString(groupDto.GroupName + "@" + groupDto.GroupDomain);
			tenant = Uri.EscapeDataString(tenant);
			var url = string.Format(ServiceConfigManager.GroupEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, principalName);
			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();
			var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json);
			return string.IsNullOrEmpty(response);
		}
Пример #16
0
 public ActiveDirectoryJoinInfoDto GetActiveDirectory(ServerDto server, Token token)
 {
     var url = string.Format(ServiceConfigManager.PostAdfEndPoint, 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 authorization = string.Format("{0} {1}", token.TokenType, token.AccessToken);
     //headers.Add(HttpRequestHeader.Authorization, authorization);
     var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData);
     return JsonConvert.Deserialize<ActiveDirectoryJoinInfoDto>(response);
 }
 public ExternalIdentityProviderDto Create(ServerDto server, string tenantName, ExternalIdentityProviderDto externalIdentityProvider, Token token)
 {
     tenantName = Uri.EscapeDataString(tenantName);
     var url = string.Format(ServiceConfigManager.ExternalIdentityProvidersEndPoint, server.Protocol, server.ServerName, server.Port, tenantName);
     var dto = typeof(ExternalIdentityProviderDto).Assembly;
     var json = JsonConvert.Serialize(externalIdentityProvider, true);
     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<ExternalIdentityProviderDto>(response);
 }
Пример #18
0
        public RelyingPartyDto Create(ServerDto server, string tenant, RelyingPartyDto relyingParty, Token token)
        {
            tenant = Uri.EscapeDataString(tenant);
            var url = string.Format(ServiceConfigManager.RelyingPartysEndPoint, server.Protocol, server.ServerName, server.Port, tenant);
            var json = JsonConvert.Serialize(relyingParty);
			json = SerializationJsonHelper.Cleanup (json);
			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<RelyingPartyDto>(response);
        }
Пример #19
0
        public TenantDto Create(ServerDto server, TenantDto tenant, Token token)
        {
            tenant.Username = tenant.Username + "@" + tenant.Name;
            var url = string.Format(ServiceConfigManager.TenantsEndPoint, server.Protocol, server.ServerName, server.Port);
            var json = JsonConvert.Serialize(tenant);
			json = Cleanup (json);
            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<TenantDto>(response);
        }
Пример #20
0
 public bool LeaveActiveDirectory(ServerDto serverDto, CredentialsDto credentialsDto, Token token)
 {
     var url = string.Format(ServiceConfigManager.AdfEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port);
     var json = JsonConvert.Serialize(credentialsDto);
     ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
     var requestConfig = new RequestSettings
     {
         Method = HttpMethod.Delete,
     };
     var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType);
     //var authorization = string.Format("{0} {1}", token.TokenType, token.AccessToken);
     //headers.Add(HttpRequestHeader.Authorization, authorization);
     json = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower() + "&" + json;
     var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, json);
     return string.IsNullOrEmpty(response);
 }
Пример #21
0
 public UserDto Create(ServerDto serverDto, string tenantName, UserDto userDto, Token token)
 {
     tenantName = Uri.EscapeDataString(tenantName);
     var json = JsonConvert.Serialize(userDto);
     var url = string.Format(ServiceConfigManager.UsersEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenantName);
     ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
     var requestConfig = new RequestSettings
     {
         Method = HttpMethod.Post,
     };
     var headers = ServiceHelper.AddHeaders();
     headers[HttpRequestHeader.Accept] = ServiceConfigManager.JsonContentType;
     headers[HttpRequestHeader.ContentType] = 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<UserDto>(response);
 }
Пример #22
0
 public Token Refresh(ServerDto serverDto, LoginDto loginDto, Token tokenToRefresh)
 {
     var tenant = Uri.EscapeDataString(loginDto.TenantName);
     var url = string.Format(ServiceConfigManager.RefreshTokenEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant);
     ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
     var data = string.Format(ServiceConfigManager.RefreshTokenArguments, tokenToRefresh.RefreshToken, tokenToRefresh.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.RefreshToken = tokenToRefresh.RefreshToken;
     token.ClientId = tokenToRefresh.ClientId;
     return token;
 }
Пример #23
0
		public GroupDto Update(ServerDto serverDto, string tenant, GroupDto groupDto, Token token)
		{
			var principalName = Uri.EscapeDataString(groupDto.GroupName + "@" + groupDto.GroupDomain);
			tenant = Uri.EscapeDataString(tenant);
			var url = string.Format(ServiceConfigManager.GroupEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, principalName);
			var g = new GroupDto() { GroupDetails = new GroupDetailsDto { Description = groupDto.GroupDetails.Description } };
			var json = JsonConvert.Serialize(g);
			ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
			var requestConfig = new RequestSettings
			{
				Method = HttpMethod.Put,
			};
			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<GroupDto>(response);
		}
 public ExternalIdentityProviderDto Get(ServerDto serverDto, string tenantName, ExternalIdentityProviderDto externalIdentityProvider, Token token)
 {
     var name = Uri.EscapeDataString(externalIdentityProvider.EntityID);
     tenantName = Uri.EscapeDataString(tenantName);
     var url = string.Format(ServiceConfigManager.GetExternalIdentityProviderPostEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenantName, externalIdentityProvider.EntityID);
     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 = SerializationJsonHelper.JsonToDictionary("subjectFormats", response);
     var dto = typeof(ExternalIdentityProviderDto).Assembly;
     return JsonConvert.Deserialize<ExternalIdentityProviderDto>(response, "root", dto.GetTypes(), true);
 }
Пример #25
0
        public string GetSamlTokenFromToken(ServerDto serverDto, string tokenXML, X509Certificate2 cert, RSACryptoServiceProvider rsaKey)
        {            
            var soapString = XmlResourceHelper.GetResourceXml("Vmware.Tools.RestSsoAdminSnapIn.Service.xml.SamlTokenByToken.xml");
            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            string signed = "";
            var dt = DateTime.Now;
            var dtStart = TimeZoneInfo.ConvertTimeToUtc(dt);
            var dtEnd = dtStart.AddMinutes(10);
            string format = "yyyy-MM-ddTHH:mm:ss.fffZ";

            var xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(tokenXML);
            var samlAssertion = xmlDoc.GetElementsByTagName("Assertion", "urn:oasis:names:tc:SAML:2.0:assertion");

            var certString = Convert.ToBase64String(cert.RawData);
            string dtStartStr = dtStart.ToString(format);
            string dtEndStr = dtEnd.ToString(format);
            soapString = string.Format(soapString, dtStartStr, dtEndStr, certString, samlAssertion[0].OuterXml, dtStartStr, dtEndStr);

            //var rsaKey = PrivateKeyHelper.DecodeRSAPrivateKey(Convert.FromBase64String(keyString));
            //var rsaKey =  (RSACryptoServiceProvider)cert.PrivateKey;
            signed = SigningHelper.SignXmlFile(soapString, rsaKey);

            string xml2 = XmlResourceHelper.GetResourceXml("Vmware.Tools.RestSsoAdminSnapIn.Service.xml.SamlTokenByToken2.xml");
            xml2 = string.Format(xml2, dtStartStr, dtEndStr, certString, samlAssertion[0].OuterXml, signed, dtStartStr, dtEndStr);

            XmlDocument doc = new XmlDocument();
            doc.PreserveWhitespace = false;
            doc.LoadXml(xml2);

            soapString = doc.InnerXml;
            var customHeaders = new Dictionary<string, string>();
            customHeaders.Add("SOAPAction", "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue");
            var headers = ServiceHelper.AddHeaders("text/xml");
            var url = serverDto.Url;
            var requestConfig = new RequestSettings
            {
                Method = HttpMethod.Post,
            };
            var response = _webRequestManager.GetResponse(url, requestConfig, headers, customHeaders, soapString);
            return response;
        }
Пример #26
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);
        }
Пример #27
0
        private ClaimsPrincipal Validate(ServerDto serverDto, string audience, CertificateChainDto certificateChain, string tenantName, string token)
        {
            var certificate = certificateChain.Certificates[0];
            var publicKey = certificate.Encoded;
            var x509Certificate2 = new X509Certificate2();
            var cert = Encoding.UTF8.GetBytes(publicKey);
            x509Certificate2.Import(cert);
            var hostName = ServiceHelper.GetHostName(serverDto.ServerName);
            var validationParams = new TokenValidationParameters
            {
                ValidIssuer = string.Format(ServiceConfigManager.ValidationUri, serverDto.Protocol, hostName, tenantName),
                ValidAudience = audience,
                IssuerSigningToken = new X509SecurityToken(x509Certificate2),
                ValidateIssuer = false
            };

            var jwtSecurityTokenHandler = new JwtSecurityTokenHandler();
            SecurityToken validatedToken;
            return jwtSecurityTokenHandler.ValidateToken(token, validationParams, out validatedToken);
        }
Пример #28
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");
 }
Пример #29
0
		public IdentitySourcesNode (ServerDto serverDto, string tenantName)
		{
			_serverDto = serverDto;
			_tenantName = tenantName;
			DisplayName = "Identity Sources";
		}
		public IdentityProviderDto Probe(ServerDto server, string tenant, IdentityProviderDto provider, Token token)
		{
			var schemaSerialized = SerializeSchema(provider.Schema);
			var attributeSerailized = SerializeAttributes (provider.AttributesMap, "attributesMap");

			provider.Schema = null; 
			provider.AttributesMap = null;

			tenant = Uri.EscapeDataString(tenant);
			var url = string.Format(ServiceConfigManager.IdentityProvidersEndPoint, server.Protocol, server.ServerName, server.Port, tenant);
			url += "?probe=true";
			var dto = typeof(IdentityProviderDto).Assembly;
			var json = JsonConvert.Serialize(provider,"root", dto.GetTypes(), true);
			json = SerializationJsonHelper.Cleanup (json);

			json = json.Substring (0, json.Length - 1);

			var attributeString = "\"attributesMap\":null,";
			if (json.Contains (attributeString))
				json = json.Replace (attributeString, attributeSerailized + (string.IsNullOrEmpty(attributeSerailized)? string.Empty : ","));
			else
				json += attributeSerailized;

			var schemaString = "\"schema\":null,";
			if (json.Contains (schemaString))
				json = json.Replace (schemaString, schemaSerialized + (string.IsNullOrEmpty(schemaSerialized)? string.Empty : ","));
			else
				json += schemaSerialized;
			json += "}";

			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);
			response = SerializationJsonHelper.JsonToDictionary("attributesMap",response);
			response = CleanupSchemaJson (response);
			return JsonConvert.Deserialize<IdentityProviderDto>(response,"root", dto.GetTypes(), true);
		}