Fala pessoal, como vocês estão? Bora falar um pouco de autenticação hoje?
O OAuth é um protocolo de autorização que permite que aplicativos de terceiros acessem recursos protegidos em nome de um usuário, sem precisar compartilhar suas credenciais diretamente.
Para implementar o OAuth em uma autenticação PHP, vamos seguir esses passos:
Registro do Aplicativo:
Primeiro, você precisa registrar seu aplicativo no serviço que fornece o OAuth, obtendo as credenciais do cliente (client ID) e segredo do cliente (client secret).
Redirecionamento para Autenticação:
Quando um usuário tenta acessar um recurso protegido, você redireciona o usuário para a página de autenticação do serviço OAuth, passando as credenciais do cliente e uma URL de redirecionamento após a autenticação.
Autorização do Usuário:
O usuário fará o login no serviço OAuth e autorizará o acesso do aplicativo aos recursos protegidos em seu nome.
Obtenção do Token de Acesso:
Após a autorização, o serviço OAuth redirecionará o usuário de volta para a URL de redirecionamento do aplicativo, fornecendo um código de autorização. O aplicativo usará esse código para obter um token de acesso.
Acesso aos Recursos:
O aplicativo pode usar o token de acesso para fazer solicitações aos recursos protegidos em nome do usuário.
Beleza, depois de tanta teoria, bora partir para um exemplo prático. Vamos fazer uma autenticação OAuth 2.0 em PHP usando a biblioteca “league/oauth2-client“:
// Instale a biblioteca via Composer
composer require league/oauth2-client
A seguir, crie um arquivo PHP, carregando a biclioteca instalada. Segue um arquivo com os comentários para realizar a autenticação, obter o token e validar o mesmo:
require 'vendor/autoload.php';
use League\OAuth2\Client\Provider\GenericProvider;
// Configurações do OAuth
$provider = new GenericProvider([
'clientId' => 'SEU_CLIENT_ID',
'clientSecret' => 'SEU_CLIENT_SECRET',
'redirectUri' => 'https://seusite.com/redirecionamento.php',
'urlAuthorize' => 'https://servico-oauth.com/authorize',
'urlAccessToken' => 'https://servico-oauth.com/token',
'urlResourceOwnerDetails' => 'https://servico-oauth.com/resource'
]);
// Redirecionar para a página de autenticação
if (!isset($_GET['code'])) {
$authUrl = $provider->getAuthorizationUrl();
header('Location: ' . $authUrl);
exit;
}
// Obter o token de acesso usando o código de autorização
$token = $provider->getAccessToken('authorization_code', [
'code' => $_GET['code']
]);
// Usar o token de acesso para acessar os recursos protegidos
$response = $provider->getAuthenticatedRequest(
'GET',
'https://servico-oauth.com/api/resource',
$token
)->getBody();
echo $response;
Lembre-se de que esse exemplo é apenas uma base e que existem variações dependendo do serviço OAuth que você está usando. Certifique-se de ler a documentação oficial do serviço e da biblioteca OAuth que você escolher.
No responses yet