Mejore la seguridad con OAuth 2.0: implementación de inicios de sesión sociales en Spring Boot
En el mundo del desarrollo web moderno, proteger sus aplicaciones y hacer que la autenticación sea lo más fluida posible para los usuarios es una prioridad absoluta. Ahí es donde entra en juego OAuth 2.0: es una herramienta poderosa que no solo ayuda a proteger sus API sino que también permite a los usuarios iniciar sesión con sus cuentas existentes desde plataformas como Google y GitHub. Esto facilita las cosas para todos: los usuarios no necesitan recordar otra contraseña y los desarrolladores obtienen una forma confiable de administrar la autenticación.
En este blog, lo guiaré paso a paso sobre cómo configurar OAuth 2.0 en una aplicación Spring Boot. Integraremos Google y GitHub para la autenticación, de modo que sus usuarios puedan elegir qué servicio desean usar para iniciar sesión. También le mostraré cómo proteger sus puntos finales API usando JWT (JSON Web Tokens), asegurando que solo los usuarios autenticados pueden acceder a los recursos que se supone que deben tener.
Ya sea que esté creando una nueva aplicación o agregando seguridad a una existente, esta guía le brindará las herramientas que necesita para mantener su aplicación Spring Boot segura y fácil de usar.
Visita https://start.spring.io/
crear el proyecto
Descarga el zip, extráelo y carga el proyecto en tu IDE.
La dependencia "OAuth2 Client" en Spring Boot simplifica la integración de la autenticación OAuth 2.0 con proveedores como Google y GitHub. Maneja todo el flujo de inicio de sesión de OAuth, incluida la redirección de los usuarios a la página de inicio de sesión del proveedor, la gestión de tokens y la protección de los puntos finales de API. Al agregar esta dependencia, puede habilitar fácilmente una autenticación segura y fácil de usar en su aplicación Spring Boot.
La dependencia "Spring Web" en Spring Boot es crucial para desarrollar aplicaciones web. Proporciona funciones esenciales como creación de API RESTful, compatibilidad con arquitectura MVC y la capacidad de ofrecer vistas HTML. Con Spring Web, puede manejar fácilmente solicitudes y respuestas HTTP, administrar el enrutamiento e integrarse con otros componentes de Spring, lo que lo convierte en una parte fundamental de la creación de aplicaciones web sólidas.
Para configurar su aplicación Spring Boot para la autenticación OAuth 2.0 con Google y GitHub, deberá configurar el archivo application.properties. Este archivo contiene configuraciones esenciales para su aplicación, incluidas las credenciales del cliente OAuth, los niveles de registro y las configuraciones 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
Configuraciones del cliente OAuth: Reemplace YOUR_GOOGLE_CLIENT_ID, YOUR_GOOGLE_CLIENT_SECRET, YOUR_GITHUB_CLIENT_ID y YOUR_GITHUB_CLIENT_SECRET con las credenciales que obtiene de Google y GitHub cuando registra su aplicación.
Para registrar su aplicación con Google y GitHub para la autenticación OAuth 2.0, debemos ir a https://console.cloud.google.com
haga clic en Servicios API
Credenciales -> crear Credenciales -> ID de cliente OAuth
ID de cliente OAuth -> Crear ID de cliente OAuth
seleccione Tipo de aplicación para Aplicación web
dar el nombre de la aplicación
establezca URI de redireccionamiento autorizados con esta URL y aquí nuestra aplicación se ejecuta en el puerto 8000, por lo que el puerto de la aplicación es 8000. luego haga clic en crear
http://localhost:8000/login/oauth2/code/google
después de que se crea el cliente OAuth y obtenemos el ID del cliente y el secreto del cliente.
copie ambos y reemplácelos con las propiedades del archivo 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
La clase SecurityConfig configura la seguridad para una aplicación Spring Boot usando OAuth2. Define un bean SecurityFilterChain, que establece reglas de seguridad. El método AuthorizeHttpRequests garantiza que todas las solicitudes entrantes requieran autenticación. La línea .oauth2Login(Customizer.withDefaults()) habilita la funcionalidad de inicio de sesión de OAuth2 con la configuración predeterminada. Finalmente, el método securityFilterChain devuelve la cadena de filtros de seguridad configurada llamando a http.build(). Esta configuración garantiza que la aplicación sea segura y admita la autenticación OAuth2 para los usuarios.
Acceder a su aplicación a través de Chrome
Al desarrollar y probar su aplicación Spring Boot, es crucial saber cómo interactuar con ella a través de Postman. Si su aplicación se ejecuta localmente en el puerto 8000, puede acceder a ella utilizando la siguiente URL base:
http://localhost:8000
obtenemos una respuesta similar a esta
ahora podemos acceder a los puntos finales.
La autenticación de GitHub en Spring Boot permite a los usuarios iniciar sesión con sus cuentas de GitHub, lo que agiliza el proceso de autenticación y mejora la seguridad. Al integrar GitHub como proveedor de OAuth 2.0, su aplicación puede autenticar usuarios a través de la plataforma confiable de GitHub. Esto implica registrar su aplicación en GitHub para obtener una ID de cliente y un secreto de cliente, que luego se configuran en su aplicación Spring Boot. Los usuarios son redirigidos a GitHub para iniciar sesión y, tras una autenticación exitosa, son redirigidos nuevamente a su aplicación con un token de acceso, lo que permite el acceso seguro a sus recursos protegidos. Esta integración es ideal para aplicaciones dirigidas a desarrolladores y usuarios expertos en tecnología.
crea una cuenta de GitHub y ve a configuración
en la esquina izquierda tenemos la configuración del desarrollador
Navega a aplicaciones OAuth
haga clic en crear aplicación OAuth
obtenemos la interfaz como esta
establecer ** URL de devolución de llamada de autorización ** según el puerto de su aplicación
http://localhost:8000/login/oauth2/code/github
y establecer URL de la página de inicio
http://localhost:8000
después de registrar la Aplicación obtenemos el ID del Cliente y el Secreto del Cliente
ahora reemplácelo con las propiedades del archivo Application.properties
spring.security.oauth2.client.registration.github.client-id=Ov23liBMLc5e1ItoONPx spring.security.oauth2.client.registration.github.client-secret=
Pruebe el inicio de sesión de GitHub
Iniciar sesión con GitHub: cuando se le solicite, inicie sesión con sus credenciales de GitHub.
Redirección exitosa: tras una autenticación exitosa, serás redirigido a la página de inicio de tu aplicación.
Puedes explorar el código fuente completo del Servicio de autenticación de usuarios en mi repositorio de GitHub. Este proyecto muestra varias funciones, como registro de usuario, inicio de sesión y acceso seguro mediante JWT para la autenticación. ¡No dudes en consultarlo, contribuir o utilizarlo como referencia para tus propios proyectos!
Repositorio de GitHub: https://github.com/ishrivasayush/oauth2-authentication-service
Implementar OAuth 2.0 con Spring Boot, utilizando Google y GitHub como proveedores de autenticación, es una forma poderosa de mejorar la seguridad y usabilidad de su aplicación. Al permitir que los usuarios inicien sesión con sus cuentas existentes, se reduce la fricción y se proporciona una experiencia de usuario más fluida. Al mismo tiempo, proteger los puntos finales de su API con JWT garantiza que solo los usuarios autenticados tengan acceso a recursos confidenciales.
A través de esta guía, hemos cubierto todo, desde la configuración de credenciales de OAuth en Google y GitHub hasta la configuración de su aplicación Spring Boot para manejar la autenticación y proteger sus puntos finales. Si eres nuevo en OAuth 2.0 o buscas integrarlo en tus proyectos, estos pasos te ayudarán a crear un sistema de autenticación seguro y escalable.
La seguridad es un viaje sin fin, pero con las herramientas y prácticas adecuadas, puedes crear aplicaciones que sean seguras y fáciles de usar. Ahora que tiene una base sólida, puede explorar más agregando más proveedores, personalizando la experiencia del usuario o profundizando en las configuraciones de JWT. ¡Feliz codificación!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3