Filter

Amigos,

tenho 2 aplicações que no menu da aplicação 1 chama a aplicação 2,

para que eu posso evitar de um usuário acessar o link da aplicação 2 direto eu possa barrar isso criando um Filter ?

pergunta muito genérica, explique melhor

na prática, você fará um condicional em volta do seu link
se for jsp:

<c:if test="${usuarioPodeAcessar}">
   <a href="link">link</a>
</c:if>

o filter seria aplicado caso você queira bloquear o acesso ao sistema diretamente, mas aí já seria um sistema de autenticação, onde você impediria o acesso de quem não pode.
se a idéia é usar a mesma sessão de uma aplicação na outra, considere usar uma API de SSO.

Você tem duas aplicações, A e B.
A aplicação A chama a B, porém o usuário não pode acessar a B diretamente, correto?

Fiz algo parecido uma vez, mais tinha um webservice no meio.

Quando o usuário clicava no link da aplicação A, antes de ser redirecionado, era gerado uma chave e a mesma era salva no banco, junto com a validade (em horas) e depois anexada na URL.
A aplicação B recebia essa chave, verificava se era válida (verificando se a hora era menor ou igual a hora do banco) e permitia ou não o acesso, isso usando um Filtro.

Só não sei se no seu caso é a forma mais correta.

Fera o que o fer.ferreira6 e exatamente o que preciso,

teria um outra forma mais simples de fazer isso sem um web service ?

se vc não precisa de segurança pode ser feito diretamente.

se vc precisa de um nível mínimo de segurança tem que ao menos confirmar um hash.

ex:
suaurl?token=123

ai na aplicação que recebe verifica se o token é válido.
normalmente o pessoa usa um hash md5 ou sha para validar, sendo este token calculado a partir de uma chave e vc pode usar datas ou qualquer outro meio.
o importante é garantir que este token não seja possível de ser reproduzido.

vale lembrar que isto não é seguro pois a pessoa pode conhecer seu token e usá-lo de maneira errada.
por este motivo o ideal é usar um webservice ou uma api de sso como disse anteriormente, mas aí você terá que aplicar a api nas duas aplicações (talvez muito trabalho)

Vc tem um exemplo de como posso implementar isso em um web service ?

vc pode usar rest

a caelum tem um framework chamado restfulie para facilitar: http://restfulie.caelum.com.br/
se for no mesmo domínio você pode usar ajax e realizar a autenticação normal.

ou utilizar a ideia de apikey: http://www.infoq.com/br/news/2012/10/autenticacao-rest

estude sobre rest, primeiro pra te ajudar no seu problema, segundo porque vc pode desacoplar a interface do backend usando isto, além de favorecer a criação de apis para seus sistemas.