MVC salva um token na sessão

Estou chamando um serviço e preciso passar o token de segurança permanente do usuário a cada solicitação feita.

Para fazer isso, adicionei este método à minha classe de controlador base:

protected UserData getUsr()
{
        try
        {
            UserData usr = new UserData();
            usr.SecurityToken = Session["secToken"].ToString();

            MembershipUser mvcUser = Membership.GetUser(HttpContext.User.Identity.Name);
            usr.Id = (int)mvcUser.ProviderUserKey;

            return usr;
        }
        catch (Exception ex)
        {
            log.Debug("Could not create usr object", ex);
            throw new Exception("Could not authenticate");
        }
    }

Esse problema aqui é que, às vezes, os dados de User.Identity duram mais do que os dados da sessão, fazendo com que bugs estranhos ocorram quando o usuário vê que está logado, mas suas solicitações falham.

Existe uma maneira melhor para armazenar esse token / posso armazená-lo de tal forma que ele irá expirar sempre que o objeto User.Identity expira?

Além disso, se alguém souber de alguns bons exemplos básicos de compreensão / documentação para HttpContext e MVC autorizar filtros que seriam ótimos.