Пример #1
0
        public static TokenObjectModel getTokenByAuthorizationCode(string AuthorizationCode)
        {
            SqlDataReader rdr = null;

            try
            {
                SqlConnectionStringBuilder builder = getConnectionString();
                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Connection  = connection;
                    cmd.CommandText = "Proc_Token_GetTokenByAuthorizationCode";
                    cmd.Parameters.Add(new SqlParameter("@AuthorizationCode", AuthorizationCode));
                    rdr = cmd.ExecuteReader();
                    if (rdr.Read())
                    {
                        TokenObjectModel tokenObj = new TokenObjectModel((int)rdr["TokenId"], (String)rdr["AccessToken"], (String)rdr["RefreshToken"], Convert.ToDateTime(rdr["ExpiresIn"]), (string)rdr["AuthorizationCode"]);
                        return(tokenObj);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            catch (SqlException ex)
            {
                Console.WriteLine("Exception:" + ex.Message);
                return(null);
            }
        }
Пример #2
0
        public static TokenObjectModel GetGoogleAccesToken(string code)
        {
            string    url = ConfigurationManager.AppSettings["google_auth_url"];
            WebClient wc  = new WebClient();

            wc.QueryString.Add("code", code);
            wc.QueryString.Add("client_id", ConfigurationManager.AppSettings["client_id"]);
            wc.QueryString.Add("client_secret", ConfigurationManager.AppSettings["client_secret"]);
            wc.QueryString.Add("redirect_uri", ConfigurationManager.AppSettings["redirect_uri"]);
            wc.QueryString.Add("grant_type", ConfigurationManager.AppSettings["grant_type"]);


            if (code == null)
            {
                return(null);
            }
            else
            {
                var data                         = wc.UploadValues(url, "POST", wc.QueryString);
                var responseString               = UnicodeEncoding.UTF8.GetString(data);
                GoogleTokenObjectModel token     = JsonConvert.DeserializeObject <GoogleTokenObjectModel>(responseString);
                var              stream          = token.id_token;
                var              handler         = new System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler();
                var              jsonToken       = handler.ReadToken(stream);
                var              tokenS          = handler.ReadToken(stream) as JwtSecurityToken;
                string           sub             = tokenS.Claims.First(claim => claim.Type == "sub").Value;
                string           email           = tokenS.Claims.First(claim => claim.Type == "email").Value;
                string           name            = tokenS.Claims.First(claim => claim.Type == "name").Value;
                UserObjectModel  userObj         = new UserObjectModel(name, email, sub);
                TokenObjectModel tokenObj        = new TokenObjectModel();
                bool             isUserExists    = UserHelper.IsUserRegistered(sub);
                bool             registerSuccess = false;
                if (!isUserExists)
                {
                    registerSuccess = UserHelper.RegisterUser(userObj) ? true : false;
                }
                if (isUserExists | registerSuccess)
                {
                    userObj = UserHelper.getUserBySubKey(userObj.Sub);
                    CreateUserSession(userObj);
                    tokenObj = TokenHelper.createToken(userObj);
                    tokenObj = TokenHelper.getTokenByAuthorizationCode(tokenObj.AuthorizationCode);
                    UserTokensObjectModel userTokenObj = new UserTokensObjectModel(userObj.UserId, tokenObj.TokenId);
                    bool success = UserTokensHelper.MapUserToken(userTokenObj);
                }
                return(tokenObj);
            }
        }
Пример #3
0
        public HttpResponseMessage getAccessTokenByAuthorizationCode([FromBody] CodeObject codeObj)
        {
            TokenObjectModel tokenObj = TokenHelper.getTokenByAuthorizationCode(codeObj.code);

            if (tokenObj != null)
            {
                UserObjectModel  userObj      = TokenHelper.getUserByAccessToken(tokenObj.AccessToken);
                TokenObjectModel tokenUserObj = new TokenObjectModel(tokenObj.TokenId, tokenObj.AccessToken, tokenObj.RefreshToken, tokenObj.ExpiresIn, tokenObj.AuthorizationCode, userObj.UserId, userObj.Username, userObj.EmailId);
                var message = Request.CreateResponse(HttpStatusCode.Created, tokenUserObj);
                return(message);;
            }
            else
            {
                var message = Request.CreateResponse(HttpStatusCode.NotFound, "Invalid Token");
                return(message);
            }
        }
Пример #4
0
        public HttpResponseMessage GoogleLogin()
        {
            var uri  = Request.RequestUri;
            var code = System.Web.HttpUtility.ParseQueryString(uri.Query)["code"];

            if (code != null)
            {
                TokenObjectModel    tokenObj = LoginHelper.GetGoogleAccesToken(code);
                HttpResponseMessage resp     = LoginHelper.CreateCookie(tokenObj.AuthorizationCode);
                return(resp);
            }
            else
            {
                var message = Request.CreateResponse(HttpStatusCode.NotFound, "Code is inavlid");
                return(message);
            }
        }
Пример #5
0
        public HttpResponseMessage getAccessTokenByRefreshToken([FromBody] RefreshTokenObject refreshTokenObj)
        {
            UserObjectModel  userObj  = TokenHelper.getUserByRefreshToken(refreshTokenObj.RefreshToken);
            TokenObjectModel tokenObj = TokenHelper.createToken(userObj);

            tokenObj = TokenHelper.getTokenByAuthorizationCode(tokenObj.AuthorizationCode);
            if (userObj != null || tokenObj != null)
            {
                UserTokensObjectModel userTokenObj = new UserTokensObjectModel(userObj.UserId, tokenObj.TokenId);
                bool             success           = UserTokensHelper.MapUserToken(userTokenObj);
                TokenObjectModel tokenUserObj      = new TokenObjectModel(tokenObj.TokenId, tokenObj.AccessToken, tokenObj.RefreshToken, tokenObj.ExpiresIn, tokenObj.AuthorizationCode, userObj.UserId, userObj.Username, userObj.EmailId);
                var message = Request.CreateResponse(HttpStatusCode.Created, tokenUserObj);
                return(message);
            }
            else
            {
                var message = Request.CreateResponse(HttpStatusCode.Unauthorized, "Invalid Token");
                return(message);
            }
        }
Пример #6
0
        public static TokenObjectModel createToken(UserObjectModel userObj)
        {
            //Guid AccessTokenObj = Guid.NewGuid();
            var  AccessTokenObj       = Task.Run(() => CreateJWTToken(userObj)).Result;
            Guid RefreshTokenObj      = Guid.NewGuid();
            Guid AuthorizationCodeObj = Guid.NewGuid();

            DateTime currentTime = DateTime.Now;
            DateTime x5MinsLater = currentTime.AddMinutes(5);

            try
            {
                SqlConnectionStringBuilder builder = getConnectionString();
                using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Connection  = connection;
                    cmd.CommandText = "Proc_Token_CreateToken";
                    cmd.Parameters.Add(new SqlParameter("@AccessToken", AccessTokenObj.ToString()));
                    cmd.Parameters.Add(new SqlParameter("@RefreshToken", RefreshTokenObj.ToString()));
                    SqlParameter parameter = cmd.Parameters.Add("@ExpiresIn", System.Data.SqlDbType.DateTime);
                    parameter.Value = x5MinsLater;
                    cmd.Parameters.Add(new SqlParameter("@AuthorizationCode", AuthorizationCodeObj.ToString()));
                    bool             IsSuccess = cmd.ExecuteNonQuery() != 0 ? true : false;
                    TokenObjectModel tokenObj  = new TokenObjectModel(AccessTokenObj.ToString(), RefreshTokenObj.ToString(), x5MinsLater, AuthorizationCodeObj.ToString());
                    return(tokenObj);
                }
            }
            catch (SqlException ex)
            {
                Console.WriteLine("Exception:" + ex.Message);
                return(null);
            }
        }