Exemplo n.º 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
            });
        }