Spring Boot - Spring Security - JWT Tabanlı Kullanıcı Doğrulama, Yetkilendirme, Register, Login ve RabbitMQ ile Email Gönderme
Bu proje, Spring Boot ve Spring Security kullanılarak geliştirilmiş, JWT (JSON Web Token) tabanlı bir kullanıcı yetkilendirme ve kimlik doğrulama uygulamasını içermektedir. Temel amacı, güvenli bir şekilde kullanıcıların kaydolmalarını, giriş yapmalarını ve belirli rollerle korunan API endpointlerine erişmelerini sağlamaktır.
Projeyi başlatmak ve yerel makinenizde çalıştırmak için aşağıdaki adımları takip edin.
Aşağıdaki yazılımların yüklü olduğundan emin olun:
- Docker
- Docker Compose
- Java (min. JDK 18)
- Spring Boot
- Spring Security
- JWT (JSON Web Token)
- Docker ve Docker Compose
- MySQL
- Repository'yi klonlayın:
git clone https://github.com/eraykisabacak/spring-boot-jwt-token
- Proje dizinine gidin:
cd spring-boot-jwt-token
- Spring Boot uygulamasını başlatın:
./mvnw spring-boot:run
- Docker Compose kullanarak MySQL veri tabanını oluşturun.
docker-compose up -d
- Eğer RabbitMQ ile email göndermek isterseniz application.properties dosyasına kendi gmail email ve password bilgilerinizi yazmanız lazım. (Google gmail ayarlardan bazı izinler vermeniz gerekebilir. )
spring.mail.username= spring.mail.password=
Aşağıda proje tarafından sunulan API'lerin kullanımı hakkında bilgiler bulunmaktadır.
Endpoint: /auth/register
(POST)
Açıklama: Kullanıcı kaydı oluşturur ve RabbitMQ ile welcome emaili gönderilir.
Parametreler:
username
(zorunlu)password
(zorunlu)name
(zorunlu)authorities
(zorunlu)
Endpoint: /auth/login
(POST)
Açıklama: Kullanıcı girişi yapar.
Parametreler:
username
(zorunlu)password
(zorunlu)
Endpoint: /auth/welcome
(GET)
Açıklama: Herkese açık bir hoşgeldiniz sayfasıdır.
Endpoint: /auth/user
(GET)
Açıklama: JWT token ile sadece yetkilendirilmiş kullanıcılar tarafından erişilebilir.
Endpoint: /auth/admin
(GET)
Açıklama: JWT token ile sadece admin rolüne sahip kullanıcılar tarafından erişilebilir.
Endpoint: /auth/logout
(GET)
Açıklama: JWT token ile kullanıcıyı sistemden çıkarır.
Endpoint: /swagger-ui/index.html
(GET)
Açıklama: Swagger UI gösterir.
Eğer projeye katkıda bulunmak istiyorsanız, lütfen bir merge request oluşturun.