OAuth Echo
OAuth Echo é uma forma de delegar com segurança a autorização OAuth a um terceiro enquanto interage com uma API. Há quatro partes envolvidas nessa interação:- o Usuário que está usando o X por meio de uma aplicação X autorizada específica
- o Consumer, ou a aplicação X que está tentando interagir com o provedor de mídia terceiro (por exemplo, o site de compartilhamento de fotos)
- o Delegator, ou o provedor de mídia terceiro
- o Service Provider, ou seja, o próprio X
x-auth-service-provider— na prática, este é o realm para o qual a delegação de identidade deve ser enviada. No caso do X, defina como https://api.x.com/1.1/account/verify_credentials.json. Integrações do X baseadas em iOS5 adicionarão um parâmetro application_id extra a essa URL, que também será usado para calcular o oauth_signature utilizado em x-verify-credentials-authorization.x-verify-credentials-authorization— o Consumer deve criar todos os parâmetros OAuth necessários para poder chamar https://api.x.com/1.1/account/verify_credentials.json usando OAuth no header HTTP (por exemplo, deve parecer com OAuth oauth_consumer_key=”…”, oauth_token=”…”, oauth_signature_method=”…”, oauth_signature=”…”, oauth_timestamp=”…”, oauth_nonce=”…”, oauth_version=”…” ).
oauth_timestamp ainda seja válido.
Alternativamente, em vez de enviar esses dois parâmetros no header, eles poderiam ser enviados no POST como x_auth_service_provider e x_verify_credentials_authorization — nesse caso, lembre-se de fazer o escape e incluir os parâmetros na signature base string do OAuth — de forma semelhante à codificação de parâmetros em qualquer solicitação. É preferível usar headers HTTP para manter as operações o mais separadas possível.
O objetivo do Delegator, neste ponto, é verificar se o Usuário é quem diz ser antes de salvar a mídia. Assim que o Delegator recebe todos os dados acima via seu método de upload, ele deve armazenar temporariamente a imagem e então construir uma chamada ao endpoint especificado no header x-auth-service-provider — neste caso, https://api.x.com/1.1/account/verify_credentials.json, usando o mesmo header de autenticação OAuth fornecido pelo Consumer no header x-verify-credentials-authorization.
Boas práticas do OAuth Echo
Use a URL fornecida porx-auth-service-provider para realizar a consulta, não um valor hard-coded. O Apple iOS, por exemplo, adiciona um parâmetro application_id extra a todas as solicitações OAuth, e sua existência deve ser mantida em cada etapa do OAuth Echo.
Para a parte de autorização OAuth, pegue o valor do header x-verify-credentials-authorization e coloque-o em seu próprio header Authorization na chamada ao service provider. Para maior segurança, confirme que o valor em x-auth-service-provider é o esperado.
- Se o Service Provider retornar HTTP 200, ótimo. O Delegator deve armazenar permanentemente a imagem, gerar uma URL e retorná-la.
- Se o Service Provider não retornar HTTP 200, descarte a imagem e retorne um erro ao Consumer.