Pergunta

Eu tenho utilizado a API do Gráfico do Facebook (usa o OAuth 2.0 para autenticação) com êxito por um tempo agora. Agora preciso escrever minha própria API, o que permite que os desenvolvedores se conectem a ela de maneira semelhante. Eu olhei em várias bibliotecas, mas eu gostaria de algo um pouco mais magro, então eu decidi rolar o meu próprio. Olhando para o código que eu tenho que autenticar um usuário no Facebook parece relativamente simples, mas por favor me corrija se eu estiver indo embora.

Primeiro eu precisaria fornecer uma página segura que o consumidor precisaria redirecionar. por exemplo https://api.mydomain.com/oauth/authorize?client_id=consumer_key& redirect_url= callback_url . O usuário verificaria o aplicativo, em seguida, redirecionaria de volta para o URL fornecido no URL de retorno de chamada com o OAuth_Token na string de consulta. Eu suponho que eu poderia apenas gerar uma string exclusiva aleatória aqui para o OAuth_Token e armazená-lo contra o usuário para este consumidor em particular (Edit: Por favor, veja a resposta abaixo, isso deve ser único para cada aplicativo do consumidor e não o usuário).

Esse passo 1 fora do caminho. Agora preciso fornecer uma segunda página segura que o consumidor desencadearia uma solicitação da Web. por exemplo https://api.mydomain.com/oauth/access_token?client_id= Consumer_key & Client_Secret= Consumer_Secret & OAuth_Token= OAuth_Token_Returned_Above . Isso permitiria que o consumidor troque o OAuth_Token retornado acima para um token de acesso. Eu seria novamente simplesmente gerar uma corda única aleatória e armazená-la contra o usuário para este consumidor em particular.

Agora, minha API aceitaria o Access_Token para métodos que tentam pegar informações específicas para o usuário que o usa.

Eu gostaria de saber se entendi as coisas corretamente. A especificação OAuth 2.0 parece extremamente trivial se for esse o caso. Também por que temos que trocar o OAuth_Token com um Access_Token? Eu tenho minha própria ideia, mas eu apreciaria se alguém pudesse ajudar a esclarecer isso.

Eu realmente aprecio seu feedback como não quero ir em frente e desperdiçar horas implementando isso quando está completamente errado.

obrigado

Foi útil?

Solução

Na verdade, os diagramas de fluxo de protocolo seriam extremamente úteis para visualizar especificações como a da OAuth 2, mas apenas alguns parciais funcionam por aí. Como acabei de implementar apenas uma biblioteca do lado do cliente, posso verificar se você está no caminho certo. Mas aqui está uma captura:

oauth_token pertence ao seu aplicativo cliente (isto é, um leitor do Facebook da área de trabalho), que autentica seu aplicativo (apenas como um ID). Você envia isso para recuperar um Access_Token, que é específico para o seu aplicativo e usuário logado, que permite acessar recursos restritos relacionados ao usuário.

Aqui está um processo básico de autenticação de aplicativos de desktop (retirado de: http://developers.gigya. com / 020_developer_guide / 85_rest / oauth2 )

REST OAUTH 2.0

Na verdade, um fluxo digram com cronograma (de cima para baixo, tirado de: http://www.ibm.com/developerworks/web/library/wa-oauthsupport/?ca=drs-

Fluxo de protocolo

e finalmente o procedimento completo é: (retirado de http://h2anetwork.org/projectdocs/ Dpi / dpi_framework.html )

OAuth Protocol Flow

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top