Ejemplo n.º 1
0
        public static bool CheckForUserTokenAndUpdateRollingTimeout(ISqlFactory sqlFactory,
                                                                    string user,
                                                                    string id,
                                                                    System.DateTime rollingExpiryTime,
                                                                    System.DateTime currentTime)
        {
            bool successResult = false;

            try
            {
                SecurityTokenCache_Ex item = new SecurityTokenCache_Ex();
                item.SqlFactory = sqlFactory;
                item._UserName  = user;
                item._SessionSecurityTokenID = id;
                item._RollingExpiryTime      = rollingExpiryTime;
                item._CurrentTime            = currentTime;

                int result = item.Update(" RollingExpiryTime = @RollingExpiryTime", " UserName = @UserName and SessionSecurityTokenID = @SessionSecurityTokenID and RollingExpiryTime > @CurrentTime");
                if (result > 0)
                {
                    successResult = true;
                }
            }
            catch (Exception ex)
            {
                new Exception("UserName: " + user, ex).ToEventLog();
                return(false);
            }
            return(successResult);
        }
Ejemplo n.º 2
0
        public static bool AddOrUpdate(ISqlFactory sqlFactory,
                                       string endpointID,
                                       string contextID,
                                       string keyGeneration,
                                       string securityTokenValue,
                                       string sessionSecurityTokenID,
                                       System.DateTime expiryTime,
                                       System.DateTime rollingExpiryTime,
                                       string userName)
        {
            if (securityTokenValue == null || sessionSecurityTokenID == null)
            {
                return(false);
            }

            try
            {
                SecurityTokenCache_Ex token = new SecurityTokenCache_Ex()
                {
                    _Id                        = Guid.NewGuid(),
                    _ContextID                 = contextID,
                    _EndpointID                = endpointID,
                    _KeyGeneration             = keyGeneration,
                    _ExpiryTime                = expiryTime,
                    _SessionSecurityTokenValue = Encoding.UTF8.GetBytes(securityTokenValue),
                    _SessionSecurityTokenID    = sessionSecurityTokenID,
                    _UserName                  = userName,
                    _RollingExpiryTime         = rollingExpiryTime,
                    SqlFactory                 = sqlFactory
                };
                token.Insert();
            }
            catch (Exception)
            {
                //failed, probably dublicate key, try to update
                try
                {
                    var existingToken = new SecurityTokenCache_Ex()
                    {
                        _ContextID                 = contextID,
                        _EndpointID                = endpointID,
                        _KeyGeneration             = keyGeneration,
                        _ExpiryTime                = expiryTime,
                        _SessionSecurityTokenValue = Encoding.UTF8.GetBytes(securityTokenValue),
                        _SessionSecurityTokenID    = sessionSecurityTokenID,
                        _UserName          = userName,
                        _RollingExpiryTime = rollingExpiryTime,
                        SqlFactory         = sqlFactory
                    };
                    int updated = existingToken.Update("ContextID = @ContextID, EndpointID = @EndpointID, KeyGeneration = @KeyGeneration, ExpiryTime = @ExpiryTime, RollingExpiryTime = @RollingExpiryTime, SessionSecurityTokenValue = @SessionSecurityTokenValue, SessionSecurityTokenID = @SessionSecurityTokenID ", " UserName = @UserName and EndpointID = @EndpointID and ExpiryTime <= @ExpiryTime");
                    if (updated == 0)
                    {
                        throw new Exception("Newer token in cache.");
                    }
                }
                catch (Exception ex)
                {
                    new Exception("UserName: " + userName, ex).ToEventLog();
                    return(false);
                }
            }
            return(true);
        }