コード例 #1
0
 public async Task CreateAsync(AuthenticationTokenCreateContext context)
 {
     string clientid = context.Ticket.Properties.Dictionary["as:client_id"];
     if (!string.IsNullOrEmpty(clientid))
     {
         string refreshTokenId = Guid.NewGuid().ToString("n");
         UnityContainer unityContainer = UnityConfig.GetConfiguredContainer() as UnityContainer;
         IRefreshTokenBll refreshTokenBll = UnityContainerExtensions.Resolve<IRefreshTokenBll>((IUnityContainer)unityContainer);
         string refreshTokenLifeTime = context.OwinContext.Get<string>("as:clientRefreshTokenLifeTime");
         RefreshToken token = new RefreshToken()
         {
             Id = ApplicationOAuthProvider.GetSecretHash(refreshTokenId),
             ClientId = clientid,
             Subject = context.Ticket.Identity.Name,
             IssuedUtc = DateTime.UtcNow,
             ExpiresUtc = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime))
         };
         context.Ticket.Properties.IssuedUtc = new DateTimeOffset?((DateTimeOffset)token.IssuedUtc);
         context.Ticket.Properties.ExpiresUtc = new DateTimeOffset?((DateTimeOffset)token.ExpiresUtc);
         token.ProtectedTicket = context.SerializeTicket();
         int result = await refreshTokenBll.InsertRefreshToken(token);
         if (result > 0)
         {
             context.SetToken(refreshTokenId);
             if (!string.IsNullOrEmpty(this.CurrentToken))
                 await this.LogHistory(LoginType.RefreshToken, LoginStatus.Success, clientid, token.Subject, this.CurrentToken, (string)null, (string)null);
         }
         else if (!string.IsNullOrEmpty(this.CurrentToken))
             await this.LogHistory(LoginType.RefreshToken, LoginStatus.ErrorAddRefreshToken, clientid, token.Subject, this.CurrentToken, (string)null, (string)null);
     }
 }
コード例 #2
0
 public async Task<bool> AddRefreshToken(RefreshToken token)
 {
     RefreshToken existingToken = Queryable.SingleOrDefault<RefreshToken>(Queryable.Where<RefreshToken>((IQueryable<RefreshToken>)this._ctx.RefreshTokens, (Expression<Func<RefreshToken, bool>>)(r => r.Subject == token.Subject && r.ClientId == token.ClientId)));
     if (existingToken != null)
     {
         int num = await this.RemoveRefreshToken(existingToken) ? 1 : 0;
     }
     this._ctx.RefreshTokens.Add(token);
     return await this._ctx.SaveChangesAsync() > 0;
 }
コード例 #3
0
        public static async Task<long> InsertRefreshToken(RefreshToken token)

        {
            const string commandText = @" INSERT INTO RefreshTokens(Id, Subject, ClientId, IssuedUtc, ExpiresUtc, ProtectedTicket) VALUES (@Id, @Subject, @ClientId, @IssuedUtc, @ExpiresUtc, @ProtectedTicket)";
            var parameters = new DynamicParameters();
            parameters.Add("@Id", token.Id);
            parameters.Add("@Subject", token.Subject);
            parameters.Add("@ClientId", token.ClientId);
            parameters.Add("@IssuedUtc", token.IssuedUtc);
            parameters.Add("@ExpiresUtc", token.ExpiresUtc);
            parameters.Add("@ProtectedTicket", token.ProtectedTicket);

            long results;
            using (var conn = await DataAccessBase.GetOpenAsync(DataAccessBase.QuangAuthConn))
            {

                var data = await conn.QueryAsync<long>(commandText, parameters);
                results = data.FirstOrDefault();
            }
            return results;
            
        }
コード例 #4
0
 public static async Task<long> AddRefreshToken(RefreshToken token)
 {
     RefreshToken refreshToken = await FindRefreshToken(token.ClientId, token.Subject);
     if (refreshToken != null)
          await RemoveRefreshToken(refreshToken.Id);
     return await InsertRefreshToken(token);
 }
コード例 #5
0
 public Task<int> InsertRefreshToken(RefreshToken token)
 {
     return Task.FromResult(_refreshTokenTable.InsertRefreshToken(token));
 }
コード例 #6
0
 public Task<int> AddRefreshToken(RefreshToken token)
 {
     return Task.FromResult(_refreshTokenTable.AddRefreshToken(token));
 }
コード例 #7
0
 public async Task<bool> RemoveRefreshToken(RefreshToken refreshToken)
 {
     this._ctx.RefreshTokens.Remove(refreshToken);
     return await this._ctx.SaveChangesAsync() > 0;
 }
コード例 #8
0
 public static async Task<long> InsertRefreshToken(RefreshToken token)
 {
     return await (RefreshTokenDal.InsertRefreshToken(token));
 }
コード例 #9
0
 public static async Task<long> AddRefreshToken(RefreshToken token)
 {
     return await (RefreshTokenDal.AddRefreshToken(token));
 }
コード例 #10
0
 public int AddRefreshToken(RefreshToken token)
 {
     RefreshToken refreshToken = FindRefreshToken(token.ClientId, token.Subject);
     if (refreshToken != null)
         RemoveRefreshToken(refreshToken.Id);
     return InsertRefreshToken(token);
 }
コード例 #11
0
   public int InsertRefreshToken(RefreshToken token)
   {
       return _database.Execute("INSERT INTO `Security`.`RefreshTokens`(\n                                        `Id`,\n                                        `Subject`,\n                                        `ClientId`,\n                                        `IssuedUtc`,\n                                        `ExpiresUtc`,\n                                        `ProtectedTicket`\n                                    ) VALUES (\n                                        @Id,\n                                        @Subject,\n                                        @ClientId,\n                                        @IssuedUtc,\n                                        @ExpiresUtc,\n                                        @ProtectedTicket)", new Dictionary<string, object>()
 {
   {
     "@Id",
     token.Id
   },
   {
     "@Subject",
     token.Subject
   },
   {
     "@ClientId",
     token.ClientId
   },
   {
     "@IssuedUtc",
     token.IssuedUtc
   },
   {
     "@ExpiresUtc",
     token.ExpiresUtc
   },
   {
     "@ProtectedTicket",
     token.ProtectedTicket
   }
 });
   }