Aprimore a segurança com OAuth 2.0: implementando logins sociais no Spring Boot
No mundo do desenvolvimento web moderno, proteger seus aplicativos e tornar a autenticação o mais simples possível para os usuários é uma prioridade máxima. É aí que entra o OAuth 2.0: é uma ferramenta poderosa que não apenas ajuda a proteger suas APIs, mas também permite que os usuários façam login com suas contas existentes em plataformas como Google e GitHub. Isso torna as coisas mais fáceis para todos: os usuários não precisam se lembrar de mais uma senha e os desenvolvedores obtêm uma maneira confiável de gerenciar a autenticação.
Neste blog, mostrarei passo a passo como configurar o OAuth 2.0 em um aplicativo Spring Boot. Estaremos integrando o Google e o GitHub para autenticação, para que seus usuários possam escolher qual serviço desejam usar para fazer login. Também mostrarei como proteger seus endpoints de API usando JWT (JSON Web Tokens), garantindo que apenas usuários autenticados podem acessar os recursos que deveriam.
Esteja você criando um novo aplicativo ou adicionando segurança a um já existente, este guia fornecerá as ferramentas necessárias para manter seu aplicativo Spring Boot seguro e fácil de usar.
Visite https://start.spring.io/
crie o projeto
Baixe o zip, extraia-o e carregue o projeto em seu IDE.
A dependência "OAuth2 Client" no Spring Boot simplifica a integração da autenticação OAuth 2.0 com provedores como Google e GitHub. Ele lida com todo o fluxo de login do OAuth, incluindo o redirecionamento de usuários para a página de login do provedor, o gerenciamento de tokens e a proteção de endpoints de API. Ao adicionar essa dependência, você pode ativar facilmente a autenticação segura e fácil de usar em seu aplicativo Spring Boot.
A dependência "Spring Web" no Spring Boot é crucial para o desenvolvimento de aplicações web. Ele fornece recursos essenciais como criação de API RESTful, suporte à arquitetura MVC e a capacidade de servir visualizações HTML. Com Spring Web, você pode lidar facilmente com solicitações e respostas HTTP, gerenciar roteamento e integrar-se a outros componentes Spring, tornando-o uma parte fundamental da construção de aplicativos web robustos.
Para configurar seu aplicativo Spring Boot para autenticação OAuth 2.0 com Google e GitHub, você precisará configurar o arquivo application.properties. Este arquivo contém configurações essenciais para seu aplicativo, incluindo credenciais do cliente OAuth, níveis de registro e configurações JWT.
spring.application.name=oauth2-authentication-service server.port=8000 #for google spring.security.oauth2.client.registration.google.client-id=YOUR_GOOGLE_CLIENT_ID spring.security.oauth2.client.registration.google.client-secret=YOUR_GOOGLE_CLIENT_SECRET #for github spring.security.oauth2.client.registration.github.client-id=YOUR_GITHUB_CLIENT_ID spring.security.oauth2.client.registration.github.client-secret= YOUR_GITHUB_CLIENT_SECRET
Configurações do cliente OAuth: Substitua YOUR_GOOGLE_CLIENT_ID, YOUR_GOOGLE_CLIENT_SECRET, YOUR_GITHUB_CLIENT_ID e YOUR_GITHUB_CLIENT_SECRET pelas credenciais que você obtém do Google e do GitHub ao registrar seu aplicativo.
Para registrar seu aplicativo no Google e GitHub para autenticação OAuth 2.0, precisamos acessar https://console.cloud.google.com
clique em Serviços API
Credenciais -> criar credenciais -> ID do cliente OAuth
ID do cliente OAuth -> Criar ID do cliente OAuth
selecione Tipo de aplicativo para aplicativo web
forneça o nome do aplicativo
definir URIs de redirecionamento autorizados com este URL e aqui nosso aplicativo está sendo executado na porta 8000, então a porta do aplicativo é 8000. em seguida, clique em criar
http://localhost:8000/login/oauth2/code/google
depois que o cliente OAuth é criado e obtemos o ID do cliente e o segredo do cliente.
copie ambos e substitua pelas propriedades do arquivo application.properties
spring.security.oauth2.client.registration.google.client-id=YOUR_GOOGLE_CLIENT_ID spring.security.oauth2.client.registration.google.client-secret=YOUR_GOOGLE_CLIENT_SECRET
A classe SecurityConfig configura a segurança para um aplicativo Spring Boot usando OAuth2. Ele define um bean SecurityFilterChain, que configura regras de segurança. O método authorizeHttpRequests garante que todas as solicitações recebidas exijam autenticação. A linha .oauth2Login(Customizer.withDefaults()) habilita a funcionalidade de login do OAuth2 com configurações padrão. Finalmente, o método securityFilterChain retorna a cadeia de filtros de segurança configurada chamando http.build(). Essa configuração garante que o aplicativo seja seguro e ofereça suporte à autenticação OAuth2 para usuários.
Acessando seu aplicativo via Chrome
Ao desenvolver e testar seu aplicativo Spring Boot, é crucial saber como interagir com ele através do Postman. Se seu aplicativo estiver sendo executado localmente na porta 8000, você poderá acessá-lo usando o seguinte URL base:
http://localhost:8000
obtemos uma resposta semelhante a esta
agora podemos acessar os pontos finais.
A autenticação GitHub no Spring Boot permite que os usuários façam login usando suas contas GitHub, agilizando o processo de autenticação e aumentando a segurança. Ao integrar o GitHub como um provedor OAuth 2.0, seu aplicativo pode autenticar usuários por meio da plataforma confiável do GitHub. Isso envolve registrar seu aplicativo no GitHub para obter um ID de cliente e um segredo de cliente, que são então configurados em seu aplicativo Spring Boot. Os usuários são redirecionados ao GitHub para login e, após a autenticação bem-sucedida, são redirecionados de volta ao seu aplicativo com um token de acesso, permitindo acesso seguro aos seus recursos protegidos. Essa integração é ideal para aplicativos direcionados a desenvolvedores e usuários com experiência em tecnologia.
crie uma conta GitHub e vá para configurações
no canto esquerdo temos as configurações do desenvolvedor
Navegue até aplicativos OAuth
clique em criar aplicativo OAuth
obtemos a interface assim
definir ** URL de retorno de chamada de autorização ** de acordo com a porta do seu aplicativo
http://localhost:8000/login/oauth2/code/github
e defina o URL da página inicial
http://localhost:8000
após registrar o Aplicativo obtemos o ID do Cliente e Segredo do Cliente
agora substitua pelas propriedades do arquivo Application.properties
spring.security.oauth2.client.registration.github.client-id=Ov23liBMLc5e1ItoONPx spring.security.oauth2.client.registration.github.client-secret=
Teste o login do GitHub
Login com GitHub: quando solicitado, faça login com suas credenciais do GitHub.
Redirecionamento de sucesso: após a autenticação bem-sucedida, você será redirecionado para a página /home do seu aplicativo.
Você pode explorar o código-fonte completo do serviço de autenticação de usuário em meu repositório GitHub. Este projeto apresenta vários recursos, como registro de usuário, login e acesso seguro usando JWT para autenticação. Fique à vontade para conferir, contribuir ou usá-lo como referência para seus próprios projetos!
Repositório GitHub: https://github.com/ishrivasayush/oauth2-authentication-service
Implementar OAuth 2.0 com Spring Boot, usando Google e GitHub como provedores de autenticação, é uma maneira poderosa de aprimorar a segurança e a usabilidade de seu aplicativo. Ao permitir que os usuários façam login com suas contas existentes, você reduz o atrito e proporciona uma experiência de usuário mais tranquila. Ao mesmo tempo, proteger os endpoints da API com JWT garante que apenas usuários autenticados tenham acesso a recursos confidenciais.
Por meio deste guia, cobrimos tudo, desde a configuração de credenciais OAuth no Google e GitHub até a configuração de seu aplicativo Spring Boot para lidar com a autenticação e proteger seus endpoints. Quer você seja novo no OAuth 2.0 ou queira integrá-lo aos seus projetos, essas etapas o ajudarão a construir um sistema de autenticação seguro e escalonável.
A segurança é uma jornada sem fim, mas com as ferramentas e práticas certas, você pode criar aplicativos que sejam seguros e fáceis de usar. Agora que você tem uma base sólida, pode explorar ainda mais adicionando mais provedores, personalizando a experiência do usuário ou se aprofundando nas configurações do JWT. Boa codificação!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3