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