Configurar autenticação utilizando Oauth2
Implementar a autenticação utilizando o protocolo Oauth2 e o modulo osprey.
Isso pode ser feito através da criação de um objeto que implementa um esquema de segurança.
Esse esquema pode ser encontrado na pagina do github do osprey
Para implementar o esquema são necessarias as seguintes etapas:
- Criar models novas coleções no MongoDB (Client, AccessToken, AuthorizationCode). Essa etapa inclui decisões de como guardar os Tokens gerados pelo Oauth2.
- Implementar métodos para a autenticação de clientes (aplicações) e usuários.
- Implementar métodos para a geração, leitura e escrita de tokens.
- Implementar um sistema de login na API para permitir a criação de tokens.
Algumas informações úteis:
- O esquema encontrado na página do osprey contem indicações de quais métodos devem ser implementados e o que eles deveriam fazer. [Link] (https://github.com/mulesoft/osprey "Github Osprey") .
- Para oferecer essa facilidade em implementar a autenticação usando Oauth2, o osprey utiliza principalmente outros dois modulos [oauth2rize] (https://github.com/jaredhanson/oauth2orize "Oauth2rize") e [passport] (https://github.com/jaredhanson/passport "PassportJS"), que contem exemplos de implementação que dão mais sugestões de como deveria ser implementado os métodos necessarios apra o osprey como o sistema de login.
- Uma sugestão do osprey para verificar se o usuario já está logado é o connect-ensure-login que não necessita configuração se alguma estratégia de passport é utilizada (sugerindo indiretamente para utilziar passport para fazer o login).
- Passport e connect-ensure-login usam redirecionamentos em caso de erro no login, mas acredito que isso não se encaixa na api, que deveria enviar uma resposta de erro, utilizando passport é possível desabilitar os redirecionamentos, mas o outro modulo não, mas ainda sim ver como ele funciona pode facilitar a implementação do login.
- Link para a páginado protocolo Oauth2 e de sua [especificação] (https://tools.ietf.org/html/rfc6749) são bons lugares para tirar dúvidas e procurar exemplos.