Ejemplo n.º 1
0
        public static ResponseToken InvocarServicioToken(RequestToken request, string url, string verboHTTP)
        {
            ResponseToken response = new ResponseToken();

            try
            {
                HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest;
                req.Method      = verboHTTP;
                req.ContentType = "application/x-www-form-urlencoded";

                // Metodo modificado
                string postData  = "client_id=" + request.client_id + "&client_secret=" + request.client_secret + "&grant_type=" + request.grant_type;
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                req.ContentLength = byteArray.Length;
                Stream dataStream = req.GetRequestStream();

                StreamWriter sr = new StreamWriter(dataStream);
                sr.Write(postData);

                dataStream.Write(byteArray, 0, byteArray.Length);

                HttpWebResponse res    = req.GetResponse() as HttpWebResponse;
                StreamReader    reader = new StreamReader(res.GetResponseStream());
                string          resp   = reader.ReadToEnd();

                response = JsonConvert.DeserializeObject <ResponseToken>(resp);
            }catch (Exception ex)
            {
            }

            return(response);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Проверить логин пароль (на непустые)
        /// сделать запрос
        /// Если ок, добавить в локальную БД
        /// </summary>
        /// <param name="login"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public string Authorize(string login, string password, CancellationToken cToken)
        {
            if (String.IsNullOrWhiteSpace(login) && String.IsNullOrWhiteSpace(password))
            {
                return("Please fill both fields!");
            }

            var           response      = _client.Authorize(login, password, cToken);
            ResponseToken responseToken = JsonConvert.DeserializeObject <ResponseToken>(response);

            if (responseToken.ErrorID != 0)
            {
                return(responseToken.ErrorDescription);
            }


            _client.Token = responseToken.Token;
            //BookModel bookModel = _client.GetBooks(_client.Token);

            //записать сначала локальные на сервер, потом с сервера вытащить всё(в том числе только что записанные локальные)
            //отправляем HistoryModel.
            //var lastID = _client.GetLastId("Books");
            var lastID            = _env.LastRecordId;
            var localHistoryModel = _client.GetLocalBookHystory(lastID);


            return(responseToken.Token);
        }
Ejemplo n.º 3
0
        private async Task <IRestResponse> RestClientRequest <T>(T parameters, string methodUrl, Method methodType, bool authorization = true, CancellationToken cancellationToken = default)
        {
            if (authorization && (_token == null || _tokenExpire <= DateTime.UtcNow))
            {
                _token = await GetToken();
            }

            var restClient  = new RestClient(_baseUrl + methodUrl);
            var restRequest = new RestRequest(methodType);

            restRequest.AddHeader("Cache-Control", "no-cache");
            restRequest.AddHeader("Content-Type", "application/json");

            if (authorization)
            {
                restRequest.AddHeader("Authorization", "Bearer " + _token.Result.AccessToken);
            }

            if (parameters != null)
            {
                restRequest.AddParameter("params", JsonConvert.SerializeObject(parameters, new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore
                }), (ParameterType)4);
            }

            return(await restClient.ExecuteAsync(restRequest, cancellationToken));
        }
Ejemplo n.º 4
0
 public EmailService(string url, ResponseToken token)
     : base(url, token, "emails")
 {
     this.createRestService = new CreateServiceBase <Email.EmailRequest, Email.EmailResponse>(url, token, "emails");
     this.listRestService   = new ListServiceBase <Email.EmailResponse>(url, token, "emails");
     this.getRestService    = new GetServiceBase <Email.EmailResponse>(url, token, "emails");
 }
Ejemplo n.º 5
0
        public ResponseToken PostclientGetToken()
        {
            string        functionName = "SystemAuthen";
            string        baseAddress  = System.Configuration.ConfigurationManager.AppSettings["ExternalUrl"] + functionName;
            ResponseToken result       = new ResponseToken();
            RequestToken  requestToken = new RequestToken();

            requestToken.SystemID = System.Configuration.ConfigurationManager.AppSettings["SystemID"];
            try
            {
                using (var client = new HttpClient())
                {
                    var _response = client.PostAsync(baseAddress, new StringContent(JsonConvert.SerializeObject(requestToken).ToString(), Encoding.UTF8, "application/json")).Result;

                    if (_response.IsSuccessStatusCode)
                    {
                        result = _response.Content.ReadAsAsync <ResponseToken>().Result;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(result);
        }
Ejemplo n.º 6
0
        public async Task <ResponseToken> GetRefreshToken(string refreshToken)
        {
            _client.DefaultRequestHeaders.Accept.Remove(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
            _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));

            Dictionary <string, string> contentBody = new Dictionary <string, string>
            {
                { "grant_type", "refresh_token" },
                { "refresh_token", refreshToken }
            };

            try
            {
                HttpResponseMessage response = await _client.PostAsync("/token", new FormUrlEncodedContent(contentBody));

                response.EnsureSuccessStatusCode();

                string content = await response.Content.ReadAsStringAsync();

                ResponseToken result = JsonConvert.DeserializeObject <ResponseToken>(content);

                return(result);
            }
            catch (HttpRequestException ex)
            {
                throw new Exception(ex.Message);
            }
        }
Ejemplo n.º 7
0
        public static ResponseToken GenerateToken(RefreshTokenBase source, string key, int?expires = null, string issuer = null, string audience = null, DateTime?notBefore = null)
        {
            var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
            var creds = new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha512);

            DateTime?expiresDate = null;

            if (expires != null)
            {
                expiresDate = DateTime.Now.AddSeconds((int)expires);
            }

            var token = new JwtSecurityToken(issuer,
                                             audience,
                                             claims: GenerateClaims(source, source.GetType()),
                                             expires: expiresDate,
                                             signingCredentials: creds);

            var response = new ResponseToken
            {
                AccessToken  = new JwtSecurityTokenHandler().WriteToken(token),
                TokenType    = "bearer",
                ExpiresIn    = expires.ToString(),
                RefreshToken = source.RefreshToken
            };

            return(response);
        }
        internal static async Task <TaskStatus> LogIn(HttpClient httpClient, string username, string password)
        {
            HttpContent content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("grant_type", "password"),
                new KeyValuePair <string, string>("username", username),
                new KeyValuePair <string, string>("password", password),
            });
            HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "/token");

            requestMessage.Content = content;
            HttpResponseMessage responseMessage = null;

            try
            {
                responseMessage = await httpClient.SendAsync(requestMessage);
            }
            catch (Exception ex)
            {
                TaskStatus status = ApiHelper.ServerIsOpen(ex);
                return(status.IsError ? status : new TaskStatus(true, status.Message));
            }
            ResponseToken token = await responseMessage.Content.ReadAsAsync <ResponseToken>();

            if (responseMessage.IsSuccessStatusCode)
            {
                ApiHelper.AddAuthorization(token.token_type, token.access_token);
                return(new TaskStatus(false));
            }
            else
            {
                return(new TaskStatus(true, token.error_description));
            }
        }
Ejemplo n.º 9
0
        public ResponseToken Authenticate(User user)
        {
            ResponseToken result = new ResponseToken();

            try
            {
                if (user == null)
                {
                    result.status = "No information provided";
                }
                user.password = base64Decode(user.password);
                bool isCredentialValid = (user.password == "ProjectLibrary2019");
                if (isCredentialValid)
                {
                    result.token   = TokenGenerator.GenerateJwt(user);
                    result.status  = "OK";
                    result.message = "Token Generado";
                }
                else
                {
                    result.status  = "error";
                    result.message = "Invalid credentials";
                }
            }
            catch (Exception e)
            {
                result.status  = "error";
                result.message = e.Message;
            }
            return(result);
        }
Ejemplo n.º 10
0
        private async Task <ResponseToken> GetToken(CancellationToken cancellationToken = default)
        {
            while (true)
            {
                var restResponse = await RestClientRequest(new IysCredentials
                {
                    Username = _username,
                    Password = _password
                }, "/oauth2/token", Method.POST, false, cancellationToken);

                if (restResponse.StatusCode == HttpStatusCode.OK)
                {
                    _token = new ResponseToken
                    {
                        Result = JsonConvert.DeserializeObject <ResponseTokenItem>(restResponse.Content)
                    };
                    _tokenExpire = DateTime.UtcNow.AddSeconds(Convert.ToInt32(_token.Result.ExpiresIn) - 60);

                    return(_token);
                }

                Console.WriteLine("ERROR: GetToken : " + restResponse.StatusCode);
                await Task.Delay(1000, cancellationToken);
            }
        }
Ejemplo n.º 11
0
 public AllServiceBase(string url, ResponseToken token, string endpoint) : base(url, token, endpoint)
 {
     this.ListService   = new ListServiceBase <TResponse>(url, token, endpoint);
     this.DeleteService = new DeleteServiceBase <TResponse>(url, token, endpoint);
     this.GetService    = new GetServiceBase <TResponse>(url, token, endpoint);
     this.CreateService = new CreateServiceBase <TRequest, TResponse>(url, token, endpoint);
     this.UpdateService = new UpdateServiceBase <TRequest, TResponse>(url, token, endpoint);
 }
Ejemplo n.º 12
0
 public DepositService(string url, ResponseToken token)
 {
     this.contactService    = new ContactService(url, token);
     this.categoryService   = new CategoryService(url, token);
     this.createRestService = new CreateServiceBase <Deposit.DepositRequest, Deposit.DepositResponse>(url, token, "deposits");
     this.listRestService   = new ListServiceBase <Deposit.DepositResponse>(url, token, "deposits");
     this.getRestService    = new GetServiceBase <Deposit.DepositResponse>(url, token, "deposits");
 }
Ejemplo n.º 13
0
 public ContactService(string url, ResponseToken token) : base(url, token, "contacts")
 {
     this.createRestService = new CreateServiceBase <Contact.ContactRequest, Contact.ContactResponse>(url, token, "contacts");
     this.listRestService   = new ListServiceBase <Contact.ContactResponse>(url, token, "contacts");
     this.getRestService    = new GetServiceBase <Contact.ContactResponse>(url, token, "contacts");
     this.deleteRestService = new DeleteServiceBase <Contact.ContactResponse>(url, token, "contacts");
     this.updateRestService = new UpdateServiceBase <Contact.ContactRequest, Contact.ContactResponse>(url, token, "contacts");
 }
Ejemplo n.º 14
0
 public GroupService(string url, ResponseToken token) : base(url, token, "groups")
 {
     this.createRestService = new CreateServiceBase <Group, Group>(url, token, "groups");
     this.listRestService   = new ListServiceBase <Group>(url, token, "groups");
     this.getRestService    = new GetServiceBase <Group>(url, token, "groups");
     this.deleteRestService = new DeleteServiceBase <Group>(url, token, "groups");
     this.updateRestService = new UpdateServiceBase <Group, Group>(url, token, "groups");
 }
Ejemplo n.º 15
0
 public EventService(string url, ResponseToken token)
 {
     this.createRestService = new CreateServiceBase <Event, Event>(url, token, "events");
     this.listRestService   = new ListServiceBase <Event>(url, token, "events");
     this.getRestService    = new GetServiceBase <Event>(url, token, "events");
     this.deleteRestService = new DeleteServiceBase <Event>(url, token, "events");
     this.updateRestService = new UpdateServiceBase <Event, Event>(url, token, "events");
 }
Ejemplo n.º 16
0
        public ExpenseService(string url, ResponseToken token)
        {
            this.contactService  = new ContactService(url, token);
            this.categoryService = new CategoryService(url, token);

            this.listRestService   = new ListServiceBase <Expense.ExpenseResponse>(url, token, "expenses");
            this.getRestService    = new GetServiceBase <Expense.ExpenseResponse>(url, token, "expenses");
            this.createRestService = new CreateServiceBase <Expense.ExpenseRequest, Expense.ExpenseResponse>(url, token, "expenses");
        }
Ejemplo n.º 17
0
        public InvoiceService(string url, ResponseToken token)
        {
            this.contactService  = new ContactService(url, token);
            this.categoryService = new CategoryService(url, token);

            this.createRestService = new CreateServiceBase <Invoice.InvoiceRequest, Invoice.InvoiceResponse>(url, token, "invoices");
            this.listRestService   = new ListServiceBase <Invoice.InvoiceResponse>(url, token, "invoices");
            this.getRestService    = new GetServiceBase <Invoice.InvoiceResponse>(url, token, "invoices");
        }
Ejemplo n.º 18
0
        public JsonResult Login([FromQuery] string username, string password, string rolename)
        {
            // 用户名密码是否正确
            if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password) || string.IsNullOrWhiteSpace(rolename))
            {
                return(new JsonResult(new
                {
                    Code = 0,
                    Message = "传入参数不完整",
                }));
            }
            if (!((username == "aa" || username == "bb" || username == "cc") && password == "123456"))
            {
                return(new JsonResult(new
                {
                    Code = 0,
                    Message = "账号或密码错误",
                }));
            }
            // 你自己定义的角色/用户信息服务
            RoleService roleService = new RoleService();
            // 检验用户是否属于此角色
            var role = roleService.IsUserToRole(username, rolename);
            // CZGL.Auth 中一个用于加密解密的类
            EncryptionHash hash = new EncryptionHash();
            // 设置用户标识
            var userClaims = hash.BuildClaims(username, rolename);

            //// 自定义构建配置用户标识
            /// 自定义的话,至少包含如下标识
            //var userClaims = new Claim[]
            //{
            //new Claim(ClaimTypes.Name, userName),
            //    new Claim(ClaimTypes.Role, roleName),
            //    new Claim(JwtRegisteredClaimNames.Aud, Audience),
            //    new Claim(ClaimTypes.Expiration, TimeSpan.TotalSeconds.ToString()),
            //    new Claim(JwtRegisteredClaimNames.Iat, new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds().ToString())
            //};

            /*
             * iss (issuer):签发人
             * exp (expiration time):过期时间
             * sub (subject):主题
             * aud (audience):受众
             * nbf (Not Before):生效时间
             * iat (Issued At):签发时间
             * jti (JWT ID):编号
             */
            // 方法一,直接颁发 Token
            ResponseToken token = hash.BuildToken(userClaims);

            //方法二,拆分多步,颁发 token,方便调试
            //var identity = hash.GetIdentity(userClaims);
            //var jwt = hash.BuildJwtToken(userClaims);
            //var token = hash.BuildJwtResponseToken(jwt);
            return(new JsonResult(token));
        }
 public static string CaptchaVerify()
 {
     //It should only call once
     if (response.score == 0)
     {
         var responseString = RecaptchaVerify(Token);
         response = JsonConvert.DeserializeObject <ResponseToken>(responseString.Result);
     }
     return(JsonConvert.SerializeObject(response));
 }
Ejemplo n.º 20
0
        public IActionResult Index(RequestToken request)
        {
            ResponseToken token = new ResponseToken();

            if (string.IsNullOrEmpty(request.Device_Code))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("device_code")));
            }
            return(Ok(token));
        }
Ejemplo n.º 21
0
        public TaskService(string url, ResponseToken token)
            : base(url, token, "tasks")
        {
            this.contactService  = new ContactService(url, token);
            this.categoryService = new CategoryService(url, token);

            this.createRestService = new CreateServiceBase <Task.TaskRequest, Task.TaskResponse>(url, token, "tasks");
            this.listRestService   = new ListServiceBase <Task.TaskResponse>(url, token, "tasks");
            this.getRestService    = new GetServiceBase <Task.TaskResponse>(url, token, "tasks");
            this.deleteRestService = new DeleteServiceBase <Task.TaskResponse>(url, token, "tasks");
            this.updateRestService = new UpdateServiceBase <Task.TaskRequest, Task.TaskResponse>(url, token, "tasks");
        }
Ejemplo n.º 22
0
        public async Task Login_callback(String _code)
        {
            String _dropboxURL = "https://api.dropbox.com/1/oauth2/token?code=" + Uri.EscapeDataString(_code) +
                                 "&grant_type=authorization_code";

            HttpResponseMessage _response  = null;
            HttpClient          httpClient = new HttpClient();

            HttpContent content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("client_id", ClientId),
                new KeyValuePair <string, string>("client_secret", Secret)
            });

            try
            {
                _response = await httpClient.PostAsync(new Uri(_dropboxURL), content);
            }
            catch (HttpRequestException e)
            {
                Debug.WriteLine(e.Message);
            }
            if ((_response != null) && (_response.StatusCode == HttpStatusCode.OK))
            {
                ResponseToken _t = await Serialization.DeserializeHttpToJson <ResponseToken>(_response.Content) as ResponseToken;

                Token = _t.access_token;
                LocalSettings.SaveStorageValue <String>(LOCAL_OAUTH_TOKEN, Token);

                //Get UserName
                String _respJson = await httpClient.GetStringAsync(new Uri("https://api.dropbox.com/1/account/info?access_token=" + Token));

                if (_response != null)
                {
                    var value = JsonValue.Parse(_respJson).GetObject();
                    UserName = value.GetNamedString("display_name");
                    LocalSettings.SaveStorageValue <String>(LOCAL_USER_NAME, UserName);

                    //end of auth process
                    LoggedIn = WebAccountState.Connected;

                    // force synchronization
                    if (_handle != null)
                    {
                        _handle.SetSynchroStatus(SynchroManager.Status.InProgress);
                        await Synchronize(_handle);
                    }
                }
            }

            return;
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 生成 Token 信息
        /// </summary>
        /// <param name="jwt">JWT 令牌</param>
        /// <param name="timeSpan">Token过期时间</param>
        /// <returns>CZGL.Auth.Models。ResponseToken</returns>
        public ResponseToken BuildJwtResponseToken(JwtSecurityToken jwt)
        {
            var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);
            var response   = new ResponseToken
            {
                Status       = true,
                Access_Token = encodedJwt,
                Expires_In   = AuthConfig.model.TimeSpan.TotalSeconds,
                Token_Type   = "Bearer"
            };

            return(response);
        }
Ejemplo n.º 24
0
 static void StoreToken(string response)
 {
     try {
         if (response.IsClean())
         {
             ResponseToken token = JsonConvert.DeserializeObject <ResponseToken>(response);
             Settings.MalApiToken         = token.access_token;
             Settings.MalApiRefreshToken  = token.refresh_token;
             Settings.MalApiTokenUnixTime = CloudStreamCore.UnixTime + token.expires_in;
         }
     }
     catch (Exception) { }
 }
Ejemplo n.º 25
0
        public bool Connect(string ClientID, string ClientSecret, string TenantID)
        {
            try
            {
                // Constants
                var resource = $"https://login.microsoftonline.com/{TenantID}/oauth2/v2.0/token";
                var scope    = "https://graph.microsoft.com/.default";


                // Request token
                var restclient = new RestClient(resource);
                var request    = new RestRequest(Method.POST);
                request.AddParameter("client_id", ClientID);
                request.AddParameter("client_secret", ClientSecret);
                request.AddParameter("grant_type", "client_credentials");
                request.AddParameter("scope", scope);

                // Execute the request
                var Response = restclient.Execute(request);

                if (Response.ErrorException != null)
                {
                    const string message = "Error retrieving response. Check inner details for more info.";
                    var          ApplicationException = new ApplicationException(message, Response.ErrorException);
                    throw ApplicationException;
                }

                var responseJson  = Response.Content;
                var responseToken = JsonConvert.DeserializeObject <ResponseToken>(responseJson);

                if (responseToken.access_token != null)
                {
                    // Store token information
                    token = JsonConvert.DeserializeObject <ResponseToken>(responseJson);
                    return(true);
                }
                else
                {
                    const string message = "Unable to connect to Graph API Microsoft. Please check your credential";
                    var          ApplicationException = new ApplicationException(message);
                    throw ApplicationException;
                }
            }
            catch (Exception e)
            {
                const string message = "Error connect to Graph API Microsoft. Check inner details for more info.";
                var          ApplicationException = new ApplicationException(message, e);
                throw ApplicationException;
            }
        }
Ejemplo n.º 26
0
        public ActionResult Robot(string hiddenToken)
        {
            string token         = hiddenToken;
            string tokencContent = PostJsonContent(token);
            //取得隱藏欄位token
            ResponseToken responseToken = JsonConvert.DeserializeObject <ResponseToken>(tokencContent);

            Session["verification"] = responseToken.success;
            if (responseToken.success != true)
            {
                return(Content("機器人來襲"));
            }
            return(Content("success"));
        }
Ejemplo n.º 27
0
        public ResponseToken GenerateToken(RequestToken data)
        {
            ResponseToken res = new ResponseToken();

            try
            {
                res = JwtManager.GenerateToken();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(res);
        }
Ejemplo n.º 28
0
        public static ResponseToken AutorizeToken(HttpRequestMessage response)
        {
            ResponseToken rsp     = new ResponseToken();
            var           message = string.Empty;
            var           expire  = RefreshToken();

            if (expire < DateTime.Now)
            {
                //newtoken = Token.refresh(request, id);
                message             = "Token Expired";
                rsp.MessageResponse = message;
                //msg = rsp.MessageResponse;
            }
            return(rsp);
        }
Ejemplo n.º 29
0
        // läser ett tecken i taget och ifall tecknet är en av våra
        // Terminal-symboler lägger vi till dess token till listan.
        // (https://en.wikipedia.org/wiki/Lexical_analysis#Token)
        private Token ScanToken(char c, string sequence)
        {
            Token t;

            switch (c)
            {
            case '[':
                t = new DialogBeginToken();
                reader.Read();
                break;

            case ']':
                t = new DialogEndToken();
                reader.Read();
                break;

            case '#':
                t = new ResponseToken();
                reader.Read();
                break;

            case '{':
                t = new ResponseTargetBeginToken();
                reader.Read();
                break;

            case '}':
                t = new ResponseTargetEndToken();
                reader.Read();
                break;

            case '<':
                t = new ScriptableBeginToken();
                reader.Read();
                break;

            case '>':
                t = new ScriptableEndToken();
                reader.Read();
                break;

            default:
                t = IsValidWordToken(sequence, c);
                break;
            }

            return(t);
        }
Ejemplo n.º 30
0
        private async void btnRefreshToken_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var           client = new HttpClientUtility();
                ResponseToken token  = await client.GetRefreshToken(this.lblRefreshToken.Content.ToString());

                this.txtToken.Text           = token.AccessToken;
                this.lblRefreshToken.Content = token.RefreshToken;
            }
            catch (Exception ex)
            {
                this.txtToken.Text           = ex.Message;
                this.lblRefreshToken.Content = string.Empty;
            }
        }