Esempio n. 1
0
        /// <summary>
        /// Logins the specified user name.
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        /// <param name="password">The password.</param>
        public void Login(string userName, string password)
        {
            string           authCode = null;
            TokenRequestData tokReqD  = new TokenRequestData();

            try
            {
                authCode = GetAuthCode(userName, password);
                if (string.IsNullOrEmpty(authCode))
                {
                    throw new WebException("Login denied.");
                }
            }
            catch (WebException ex)
            {
                CredentialsCorrect = false;
                return;
            }

            CredentialsCorrect = true;

            try
            {
                tokReqD.Code         = authCode;
                tokReqD.Grant_Type   = "authorization_code";
                tokReqD.Redirect_Uri = urlRedirect;
                this.token           = GetToken(tokReqD);
            }
            catch (WebException ex)
            {
                throw ex;
            }
        }
Esempio n. 2
0
        public static async Task OnTokenRequest(Microsoft.AspNetCore.Http.HttpContext e)
        {
            //Get preflight token
            string           state   = e.Request.Query["state"];
            DbPreflightToken session = await Program.connection.GetPreflightTokenByTokenAsync(state);

            if (session == null)
            {
                await Program.QuickWriteToDoc(e, "Failed to sign in, you might have taken too long.", "text/plain", 400); //TODO: REDIRECT BACK TO LOGIN

                return;
            }

            //Verify
            if (!session.auth)
            {
                await Program.QuickWriteToDoc(e, "Token is not yet valid.", "text/plain", 400);

                return;
            }

            //Create output data
            TokenResponseData d = new TokenResponseData
            {
                token = session.final_token,
                next  = session.next,
                nonce = session.nonce
            };

            await Program.QuickWriteJsonToDoc(e, d);
        }
Esempio n. 3
0
    void SetToken(string json)
    {
        Debug.Log("SetToken with " + json);
        TokenResponseData tokenResponseData = JsonConvert.DeserializeObject <TokenResponseData>(json);

        //Debug.Log("setting token - " + json);
        if (tokenResponseData.status == "ok")
        {
            Token     = tokenResponseData.token;
            _playerID = tokenResponseData.player_id;
        }
        else
        {
            HTTPAlert.Present("Error", "Login failed", null, null, true);
        }
    }
Esempio n. 4
0
        /// <summary>
        /// Logins the specified reference tok.
        /// </summary>
        /// <param name="refTok">The reference tok.</param>
        public void Login(string refTok)
        {
            TokenRequestData reqD = new TokenRequestData();

            try
            {
                reqD.Refresh_Token = refTok;
                reqD.Grant_Type    = "refresh_token";

                this.token         = GetToken(reqD);
                CredentialsCorrect = true;
            }
            catch (WebException ex)
            {
                CredentialsCorrect = false;
                return;
            }
        }
        public void reNewToken(Action <Result> callBack, Action <Result> errCallBack)
        {
            Dictionary <string, string> body = new Dictionary <string, string>();

            body.Add("access_cup", CupBuild.getCupSn());

            HTTPRequest hTTPRequest = new HTTPRequest(new Uri(mUrlProvider.getCupTokenUrl(CupBuild.getCupSn())), HTTPMethods.Post, (request, response) =>
            {
                Debug.LogFormat("--------AuthenticationUtils.reNewToken.GotResponse--------");
                Debug.LogFormat("response.IsSuccess: {0}", response.IsSuccess);
                Debug.LogFormat("response.DataAsText: {0}", response.DataAsText);
                Debug.LogFormat("response.Message: {0}", response.Message);
                Debug.LogFormat("request.State: {0}", request.State);

                if (response.IsSuccess)
                {
                    TokenResponseData mTokenResponseData = mJsonUtils.String2Json <TokenResponseData>(response.DataAsText);
                    string token = mTokenResponseData.token;
                    mLocalCupAgent.saveCupToken(CupBuild.getCupSn(), token);
                    if (callBack != null)
                    {
                        callBack(Result.Success(token));
                    }
                }
                else
                {
                    if (errCallBack != null)
                    {
                        errCallBack(Result.Error());
                    }
                }
            });

            string strBody = mJsonUtils.DicToJsonStr(body);

            hTTPRequest.RawData = Encoding.UTF8.GetBytes(strBody);

            hTTPRequest.AddHeader("Gululu-Agent", mGululuNetworkHelper.GetAgent());
            hTTPRequest.AddHeader("udid", mGululuNetworkHelper.GetUdid());
            hTTPRequest.AddHeader("Accept-Language", mGululuNetworkHelper.GetAcceptLang());
            hTTPRequest.SetHeader("Content-Type", "application/json");
            hTTPRequest.Send();
        }
        private async Task <Boolean> refreshToken(User user)
        {
            using (var httpClient = new HttpClient())
            {
                var clientId     = WebConfigurationManager.AppSettings["clientId"];
                var clientSecret = WebConfigurationManager.AppSettings["clientSecret"];
                var redirectUri  = WebConfigurationManager.AppSettings["redirectUri"];
                var grantType    = "refresh_token";
                var requestData  = new List <KeyValuePair <string, string> >();

                httpClient.BaseAddress = new Uri("https://login.microsoftonline.com/");
                requestData.Add(new KeyValuePair <string, string>("client_id", clientId));
                requestData.Add(new KeyValuePair <string, string>("refresh_token", user.RefreshToken));
                requestData.Add(new KeyValuePair <string, string>("client_secret", clientSecret));
                requestData.Add(new KeyValuePair <string, string>("redirect_uri", redirectUri));
                requestData.Add(new KeyValuePair <string, string>("grant_type", grantType));
                requestData.Add(new KeyValuePair <string, string>("scope", user.Scope));

                var request = new HttpRequestMessage(HttpMethod.Post, "common/oauth2/v2.0/token");
                request.Content = new FormUrlEncodedContent(requestData);

                var response = await httpClient.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    TokenResponseData responseData = await response.Content.ReadAsAsync <TokenResponseData>();

                    var dbContext = new DbHelper();
                    dbContext.UpdateTokens(responseData.refresh_token, responseData.access_token, user.Id);
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Gets the token.
        /// </summary>
        /// <param name="reqData">The req data.</param>
        /// <returns></returns>
        private TokenResponseData GetToken(TokenRequestData reqData)
        {
            HttpWebRequest req = default(HttpWebRequest);
            WebResponse    res = default(HttpWebResponse);

            TokenResponseData resData = default(TokenResponseData);
            var postDataJson          = JsonConvert.SerializeObject(reqData);
            var postData = Encoding.UTF8.GetBytes(postDataJson);

            req        = WebRequest.CreateHttp(urlToken);
            req.Method = "POST";
            req.Headers.Add("authorization", "Basic MzU5MDM1ODY6Tm9TZWNyZXQ=");
            req.Headers.Add("origin", "https://home.innogy-smarthome.de");
            req.Headers.Add("Referer", "https://home.innogy-smarthome.de/");
            req.Headers.Add("Accept", "*/*");
            req.Headers.Add("Accept-Language", "de,en-US;q=0.7,en;q=0.3");
            req.Headers.Add("Accept-Encoding", "gzip, deflate, br");
            req.Headers.Add("content-type", "application/json");
            req.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0");
            req.Headers.Remove("Cache-Control");

            req.AllowAutoRedirect = false;

            using (reqStream = req.GetRequestStream())
            {
                reqStream.Write(postData, 0, postData.Length);
            }

            res = req.GetResponse();

            using (StreamReader reader = new StreamReader(res.GetResponseStream()))
            {
                resData = JsonConvert.DeserializeObject <TokenResponseData>(reader.ReadToEnd());
            }

            return(resData);
        }
        public async Task <HttpResponseMessage> GetAccessToken(string code, string email)
        {
            using (var httpClient = new HttpClient())
            {
                var clientId     = WebConfigurationManager.AppSettings["clientId"];
                var clientSecret = WebConfigurationManager.AppSettings["clientSecret"];
                var redirectUri  = WebConfigurationManager.AppSettings["redirectUri"];
                var grantType    = "authorization_code";
                var requestData  = new List <KeyValuePair <string, string> >();

                httpClient.BaseAddress = new Uri("https://login.microsoftonline.com/");

                requestData.Add(new KeyValuePair <string, string>("client_id", clientId));
                requestData.Add(new KeyValuePair <string, string>("code", code));
                requestData.Add(new KeyValuePair <string, string>("client_secret", clientSecret));
                requestData.Add(new KeyValuePair <string, string>("redirect_uri", redirectUri));
                requestData.Add(new KeyValuePair <string, string>("grant_type", grantType));

                var request = new HttpRequestMessage(HttpMethod.Post, "common/oauth2/v2.0/token");
                request.Content = new FormUrlEncodedContent(requestData);

                var response = await httpClient.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    TokenResponseData responseData = await response.Content.ReadAsAsync <TokenResponseData>();

                    var  dbContext = new DbHelper();
                    User user      = null;
                    var  status    = true;

                    //save token details in DB.
                    user = dbContext.UpdateUser(email, responseData.access_token, responseData.refresh_token, responseData.scope);


                    //check user has already subscribed for notification.
                    //if yes, renew his subscription. Otherwise create new subscription.
                    if (user.SubscriptionId == null || user.SubscriptionId.Trim().Length < 1)
                    {
                        status = await CreateSubscription(responseData.access_token, email);
                    }
                    else
                    {
                        status = await RenewSubscription(user);
                    }

                    if (status)
                    {
                        return(Request.CreateResponse(HttpStatusCode.OK));
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.NotFound));
                    }
                }
                else
                {
                    return(Request.CreateResponse(response.StatusCode));
                }
            }
        }