Por que eu devo ler este artigo:Neste artigo abordaremos com relação ao desenvolvimento de uma aplicação ASP MVC 5 com a integração aos mais diversos serviços de rede social encontrados na web. Este tema se aplica aos interessados em apresentar uma solução prática para usuários comuns de se conectarem a sua aplicação sem ter a necessidade de passar por um vasto formulário de registro, dando a ele a opção de acessar nossas aplicações com suas credenciais já existentes em redes sociais de acordo com sua vontade. Apresentaremos aqui um pouco com relação ao método de autenticação OAuth e entraremos com exemplos práticos de criação e utilização de serviços externos junto a nossa aplicação ASP.

Neste artigo mostraremos como construir uma aplicação web utilizando ASP.NET MVC 5 que irá permitir aos usuários realizarem seus acessos a nossa aplicação usando OAuth 2.0 com credenciais de alguns provedores de autenticação externos, como será o caso das contas que utilizaremos em nosso trabalho, que serão referentes as contas do Facebook, GitHub, LinkedIn e do próprio Google.

Ao habilitarmos essas credenciais em nossos sites, fornecemos uma vantagem significativa porque milhares de usuários já possuem contas com esses fornecedores externos. Esses usuários podem ser mais inclinados a se inscrever para o seu site se eles não tiverem que criar e lembrar de um novo conjunto de credenciais para acesso. Ainda veremos como adicionar dados de perfil para o usuário, e como usar a API Membership para adicionar funções.

O que é OAuth?

Antes de discutirmos qualquer outra coisa, vamos primeiramente entender o que é o OAuth. Vejamos o seguinte cenário, temos então aqui um usuário que possui informações armazenada no servidor e então, temos uma aplicação “terceirizada” que gostaria de acessar estas informações. Este é um cenário que podemos ter encontrado muitas vezes em nossas caminhadas pela web. Vamos dizer então que temos algumas fotos bem legais no Flickr que queremos compartilhar com os nossos amigos do Facebook (duas fontes diferentes). Vamos para o Facebook que nos redireciona para o Flickr, onde passamos os nossos dados de autenticação e pronto! A grande questão aqui, é que não precisamos compartilhar nossos detalhes do Flickr com Facebook. Este é um exemplo simples de autorização OAuth. Vejamos por um outro ângulo o que apresentamos até o momento, de acordo com a Figura 1.

Figura 1. Análise do processo de autenticação.

Na primeira etapa, temos o login do cliente à sua conta do Facebook, fornecendo um login e senha de usuário. Se o usuário quer compartilhar suas imagens do Flickr com a sua conta do Facebook, ele seleciona a opção apropriada no Facebook. Daí, o Facebook o redireciona para o Flickr, onde ele fornece suas credenciais. Uma vez que o usuário estiver conectado à sua conta do Flickr, ele pode optar por compartilhar suas imagens do Flickr com a sua conta do Facebook.

Portanto, como podemos ver, aqui temos dois tipos de autenticação sendo envolvidos, ao invés do processo de autenticação normal. Assim, podemos definir formalmente o OAuth como sendo um protocolo que permite aos usuários finais dar acesso a aplicativos de terceiros para acessar seus recursos armazenados em um determinado servidor.

Desta forma, podemos recuperar informações da nossa conta do Facebook, para que possamos usá-las em nossas aplicações. Nós podemos usar essas informações para fins diferentes, como a criação de experiências personalizadas para cada usuário de acordo com suas preferências pessoais. O OAuth 2.0 é a versão mais recente do OAuth e não é compatível com o OAuth 1.0. Diferentes provedores usam diferentes versões do OAuth. Por exemplo, o Facebook e o Twitter usam o OAuth 2.0. Nos nossos exemplos, estaremos trabalhando com o OAuth 2.0.

Vantagens de utilização do OAuth?

Ao darmos acesso aos recursos da aplicação através de acessos através de aplicações de terceiros, temos uma vantagem junto ao usuário final, pois ele pode facilmente compartilhar seus recursos já existentes com outro aplicativo em vez de duplicar os recursos em um novo site. Hoje a maioria dos usuários de internet têm várias contas com diferentes sites, como o Google, Microsoft, Facebook, etc. Imaginem a situação quando o pobre usuário é convidado a registar-se novamente em outro site. Temos certeza que vocês já tiveram essa sensação na pele, sabemos quanto tempo isso pode nos consumir.

Usando OAuth, o aplicativo pode permitir que o usuário faça o login usando suas credenciais existentes (em outro site). Assim o usuário não tem que criar e lembrar mais credenciais em um novo site. E isso nos dá uma certa vantagem como desenvolvedores, pois delegamos a autorização a um outro site confiável. Estes sites confiáveis são chamados de provedores de identidade.

Usando uma autenticação aberta dessa forma, o usuário pode dar acesso limitado aos aplicativos de terceiros para os seus recursos armazenados em algum outro site. E o usuário nunca precisa compartilhar suas credenciais com estes aplicativos de terceiros. Ao invés de buscar por usuário e senha, os aplicativos usam uma chave de acesso para buscar os dados de usuários.

Como o OAuth trabalha?

Em um cenário de usuário normal temos alguns recursos que estão armazenados no servidor que ele pode acessar usando o seu ID de usuário (ou login) e senha. O usuário fornece as suas credenciais, ou seja, seu login e sua senha, e então terá acesso aos seus recursos. Isso é obrigatório, desde que dessa forma há a garantia que os recursos do usuário estarão seguros.

As principais entidades envolvidas neste processo são:

  • O cliente
  • O Servidor
  • O Usuário acessando seus recursos armazenados no servidor
  • Os Recursos do usuário armazenados no servidor que ele está tentando acessar.

Num fluxograma comum de acesso aos recursos de um usuário é usando autorização, que é um passo que depende da autenticação. Mas o ponto principal aqui é que todo o processo será realizado por uma única aplicação.

Como a validação de usuário e senha ocorre na mesma aplicação que o usuário está acessando, por isso, a senha do usuário é armazenado no banco de dados da aplicação mais provável em um formato criptografado. Uma vez que a senha do usuário é criptografada, podemos ter certeza que suas credenciais são conhecidas apenas por ele, por isso é muito menos provável que suas credenciais sejam mal utilizadas.

O cenário acima representa um processo de autenticação típico do usuário realizado por uma aplicação. No caso de aplicações que utilizam a autenticação OAuth, o processo funciona um pouco diferente. Em vez de o usuário acessar diretamente em um aplicativo, o usuário é redirecionado para outro site, onde ele precisa passar as suas credenciais para então te ...

Quer ler esse conteúdo completo? Tenha acesso completo