Qual é o mais seguro e por quê?
Ambos são seguros, depende do ambiente em que você está usando.
Não vejo uma razão pela qual uma etapa extra (código de autorização de troca de token) seja adicionada em um fluxo de trabalho quando o servidor puder emitir diretamente um token do Access.
É simples Seu cliente não é seguro. Vamos ver em detalhes.
Considere que você está desenvolvendo um aplicativo Instagram API
e registre seu aplicativo Instagram
e defina o que API's
precisa. Instagram
irá fornecer client_id
eclient_secrect
No seu site, você configura um link que diz. "Venha usar meu aplicativo". Ao clicar nele, seu aplicativo da web deve fazer duas chamadas Instagram API
.
First
envie uma solicitação para Instagram Authentication Server
com os parâmetros abaixo.
1. `response_type` with the value `code`
2. `client_id` you have get from `Instagram`
3. `redirect_uri` this is a url on your server which do the second call
4. `scope` a space delimited list of scopes
5. `state` with a CSRF token.
Você não enviaclient_secret
, não pode confiar no cliente (o usuário e ou o navegador dele que tentam usar seu aplicativo). O cliente pode ver o script url ou java e encontrá-lo client_secrect
facilmente. É por isso que você precisa de outro passo.
Você recebe um code
e state
. O code
aqui é temporary
e não é salvo em nenhum lugar.
Em seguida, você faz uma second
chamada para Instagram API
(do seu servidor)
1. `grant_type` with the value of `authorization_code`
2. `client_id` with the client identifier
3. `client_secret` with the client secret
4. `redirect_uri` with the same redirect URI the user was redirect back to
5. `code` which we have already received.
Como a chamada é feita em nosso servidor, podemos usar com segurança client_secret
(o que mostra como estamos) com o code
que o usuário concedeu client_id
para usar o recurso.
Em resposta, teremos access_token