/// <summary> /// 生成RefreshToken值,生成后需要持久化在数据库中,客户端需要拿RefreshToken来请求刷新token /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task CreateAsync(AuthenticationTokenCreateContext context) { var refreshTokenId = Guid.NewGuid().ToString("N"); AuthService _repo = new AuthService(); var token = new RefreshToken() { //ID = refreshTokenId.GetHash(), ID = refreshTokenId, Subject = context.Ticket.Identity.Name, IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddMinutes(CMSConst.AccessRefreshTokenExpireTimeSpanMinute) }; context.Ticket.Properties.IssuedUtc = token.IssuedUtc; context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc; token.ProtectedTicket = context.SerializeTicket(); var result = await _repo.AddRefreshToken(token); if (result) { context.SetToken(refreshTokenId); } }
public async Task CreateAsync(AuthenticationTokenCreateContext context) { try { if (!context.Response.Headers.ContainsKey("Access-Control-Allow-Origin")) context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); var clientid = context.Ticket.Properties.Dictionary["as:client_id"]; if (string.IsNullOrEmpty(clientid)) { return; } var refreshTokenId = Helper.GetHash(ObjectId.GenerateNewId().ToString ()); var refreshTokenLifeTime = context.OwinContext.Get<string>("as:clientRefreshTokenLifeTime"); var token = new RefreshToken() { Token = refreshTokenId , ClientId = clientid, Subject = context.Ticket.Identity.Name, IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime)) }; context.Ticket.Properties.IssuedUtc = token.IssuedUtc; context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc; token.ProtectedTicket = context.SerializeTicket(); authRepository = new AuthService(); var result = await authRepository.AddRefreshToken(token); if (result) { context.SetToken(refreshTokenId); } } catch (Exception exp) { } }
public async Task CreateAsync(AuthenticationTokenCreateContext context) { var clientid = context.Ticket.Properties.Dictionary[Constants.KEY_CLIENT_ID]; if (string.IsNullOrEmpty(clientid)) { return; } var refreshTokenId = Guid.NewGuid().ToString("n"); //TODO: replace with IoC instead of OwinContext var repo = new AuthService(context.OwinContext.Get <ApplicationDbContext>()); var refreshTokenLifeTime = context.OwinContext.Get <string>(Constants.KEY_CLIENT_REFRESHTOKEN_LIFETIME); var formCollection = await context.Request.ReadFormAsync(); var token = new RefreshToken { Id = Helper.GetHash(refreshTokenId), ClientId = clientid, Subject = context.Ticket.Identity.Name, IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime)), Origin = Helper.GetHash(formCollection[Constants.KEY_ORIGIN_TOKEN]) }; context.Ticket.Properties.IssuedUtc = token.IssuedUtc; context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc; token.ProtectedTicket = context.SerializeTicket(); var result = await repo.AddRefreshToken(token); if (result) { context.SetToken(refreshTokenId); } }
public async Task CreateAsync(AuthenticationTokenCreateContext context) { var clientid = context.Ticket.Properties.Dictionary["as:client_id"]; if (string.IsNullOrEmpty(clientid)) { return; } var refreshTokenId = Guid.NewGuid().ToString("n"); using (var _repo = new AuthService()) { var refreshTokenLifeTime = context.OwinContext.Get <string>("as:clientRefreshTokenLifeTime"); var token = new RefreshToken() { Id = Helper.GetHash(refreshTokenId), ClientId = clientid, Subject = context.Ticket.Identity.Name, IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime)) }; context.Ticket.Properties.IssuedUtc = token.IssuedUtc; context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc; token.ProtectedTicket = context.SerializeTicket(); var result = await _repo.AddRefreshToken(token); if (result) { context.SetToken(refreshTokenId); } } }