OAuth signature invalid Exception – OAuth Signed request – Codigo Java
Talvez essa seja a área que apresente mais problemas no processo de comunicação do container Opensocial com seu aplicativo serverside, escrito em uma linguagem qualquer - Java, PHP, Python, etc ...
O processo de signed request (requests assinados digitalmente), consiste em garantir que somente o container possa enviar requisições para o seu servidor. Dessa forma, usuários mal intencionados não podem forjar uma requisição e transmiti-la ao seu servidor.
Não se trata de firewall, e sim de um mecanismo de criptografia de dados entre os servidores, onde somente quem conhece a chave, pode decriptar a mensagem.
O processo, de uma forma bem sucinta, funciona assim:
- Há duas chaves de criptografia: uma pública e uma privada. A pública, o container entrega ao servidor de destino para decriptar a mensagem, e a privada, ele usa para encriptar as mensagens;
- Ao gerar uma requisição HTTP - POST, por exemplo, o container gera uma assinatura e encripta todo o conteúdo;
- O servidor, usando a assinatura e a chave pública, decripta a mensagem;
Implementações, nas mais diversas linguagens, podem ser encontradas em: http://wiki.opensocial.org/index.php?title=Validating_Signed_Requests
Só há um porém: A versão Java possui um bug na biblioteca que foi referenciada. Depois de muito debugar por aqui, acabei achando o problema - relacionado a encoding. Para resolver o problema, basta usar uma biblioteca alternativa, criada pelo próprio pessoal do Opensocial. Mais detalhes em: http://code.google.com/p/opensocial-java-client/
Um abraço e até a próxima
About Robson Dantas
Robson Dantas é gerente de tecnologia da Agênciaclick, com mais de 10 anos de experiência na área de tecnologia e internet. Apaixonado por tecnologias Google, redes sociais e opensocial, escreve artigos para divulgar a plataforma no tempo que tem livre.Projeto
Categorias
- Opensocial com flash (1)
- Opensocial com PHP (2)
- Orkut (9)
- Palestras e eventos (2)
- Segurança de aplicativos (2)
- Shindig (2)
- Signed Request (2)