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