1        API SMARTCHARGE

No ambiente Smartcharge, o acesso a qualquer informao e feita atravs de APIs. Foi criado um pacote implementado no padro OAuth2 e denominada Smartcharge OAuth2 Framework. Esse pacote fornece endpoints, dados e lgica necessria para implementar o padro OAuth2 em projetos Smartcharge.

1.1  OAuth

O OAuth um padro de autenticao para APIs Web, permitindo que aplicaes client acessem recursos protegidos em uma API. um padro de autorizao aberto, poderoso e flexvel que pode ser usado para proteo de aplicaes e APIs Rest. Com OAuth possvel prover um mecanismo padronizado em que todos os componentes do sistema possam interagir de um modo seguro. O padro mais atual do OAuth o OAuth2. O OAuth 2 fornece fluxo de autorizao para aplicaes web e desktop, e para dispositivos mveis.

1.2  Como funciona

A estrutura de autorizao Smartcharge permite que os websites e aplicativos obtenham acesso limitado s contas de usurios em um servio HTTP. Ele funciona delegando a autenticao de usurio ao servio que hospeda a conta do usurio, e autorizando aplicaes de terceiros a acessar a conta do usurio.

Este guia informativo orientado para desenvolvedores de aplicativos, e fornece uma viso geral dos papis OAuth 2, tipos de concesso de autorizao, casos de uso, e fluxos.

1.3  Papis OAuth

O OAuth define quatro papis:

         Proprietrio do Recurso

         Cliente

         Servidor de Recurso

         Servidor de Autorizao

1.3.1   Proprietrio do Recurso: Usurio

O proprietrio do recurso o usurio que autoriza uma aplicao a acessar sua conta. O acesso da aplicao conta do usurio limitado ao escopo da autorizao concedida (por exemplo, acesso para leitura ou escrita).

1.3.2   Recurso / Servidor de Autorizao: API

O servidor de recurso hospeda as contas de usurio protegidas, e o servidor de autorizao verifica a identidade do usurio e ento emite tokens de acesso para a aplicao.

Pelo ponto de vista de um desenvolvedor de aplicaes, a API de um servio cumpre os papis de servidor de recursos e de autorizao.

1.3.3   Cliente: Aplicao

O cliente a aplicao que quer acessar a conta do usurio. Antes de fazer isso, ela deve ser autorizada pelo usurio, e a autorizao deve ser validada pela API.

1.3.4   Fluxo Abstrato do Protocolo

Agora que voc tem uma idia do que so os papis OAuth, vamos dar uma olhada em um diagrama de como eles geralmente interagem uns com os outros.

https://assets.digitalocean.com/articles/translateddiagrams32918/Abstract-Protocol-Flow-Portuguese@2x.png

1.3.5   Registro da Aplicao

Antes de utilizar o Smartcharge OAuth2 Framework com a sua aplicao, voc deve registrar sua aplicao com o servio. Isso feito atravs de um formulrio de registro na parte de desenvolvedor do website do servio, onde voc ir fornecer as seguintes informaes:

         Nome da Aplicao

         Site da Aplicao

         URI de Redirecionamento ou URL de Retorno

A URI de redirecionamento para onde o servio ir redirecionar o usurio depois de autorizar (ou negar) a sua aplicao, e, portanto, a parte do seu aplicativo que ir lidar com cdigos de autorizao ou tokens de acesso.

1.3.6   ID do Cliente e Chave de Acesso do Cliente

Uma vez que sua aplicao esteja registrada, o servio ir emitir credenciais do cliente na forma de identificador do cliente e chave de acesso do cliente. O ID do Cliente uma seqncia exposta publicamente que utilizada pelo servio de API para identificar a aplicao, e tambm utilizada para construir URLs de autorizao que so apresentadas aos usurios. A Chave Secreta do Cliente utilizado para autenticar a identidade da aplicao para o servio de API quando a aplicao solicita acesso conta do usurio, e deve ser mantido em segredo entre a aplicao e a API.

1.3.7   Concesso de Autorizao

No Fluxo Abstrato do Protocolo acima, os primeiros quatro passos cobrem a obteno de uma concesso de autorizao e do token de acesso. O tipo da concesso de autorizao depende do mtodo usado pela aplicao para solicitar a autorizao, e dos tipos de concesso suportados pela API. O OAuth 2 define quatro tipos de concesso, cada um dos quais til em diferentes casos:

         Cdigo de Autorizao: usado com aplicaes do lado servidor

         Implcito: usado com Apps Mveis ou Aplicaes Web (aplicaes que rodam no dispositivo do usurio)

         Credenciais de Senha do Proprietrio do Recurso: usado com aplicativos confiveis, como os de propriedade do prprio servio

         Credenciais do Cliente: usado no acesso de API das Aplicaes