O filtro HTTP é usado por todo o sistema, você não pode colocar informações referentes a um usuário específico em algum atributo. Então o atributo Role[] roles = null; está errado. Deveria usar apenas variáveis locais dentro do método.
Onde o NullPointer aconteceu? Qual foi o stack trace gerado?