پیاده سازی OAuth2 در Spring Boot: راهنمای گام به گام

Summarize this content to 400 words in Persian Lang
استاد OAuth2 در Spring Boot با راهنمای گام به گام ما! برنامه های خود را با مثال های کد عملی ایمن کنید
در چشم انداز دیجیتالی به هم پیوسته امروزی، ایمن سازی برنامه ها و مدیریت احراز هویت کاربر بسیار مهم است. یکی از قوی ترین و گسترده ترین پروتکل ها برای مجوز، OAuth2 است. چه در حال ساخت یک برنامه وب، برنامه تلفن همراه یا هر سرویسی باشید که به احراز هویت کاربر نیاز دارد، درک OAuth2 ضروری است.
این راهنما شما را در پیاده سازی OAuth2 در یک برنامه Spring Boot با تمرکز بر روی آن راهنمایی می کند authorization_code نوع کمک مالی ما مفاهیم را تجزیه میکنیم، بررسی میکنیم که چرا OAuth2 مهم است، و مثالهای کد جاوا واضحی را ارائه میکنیم تا به شما در شروع کار کمک کند، حتی اگر مبتدی باشید.
OAuth2 چیست و چرا مهم است؟
OAuth2 (Open Authorization 2) یک پروتکل استاندارد صنعتی برای مجوز است. این اجازه می دهد تا برنامه ها دسترسی محدودی به حساب های کاربری در یک سرویس HTTP، مانند فیس بوک، گیت هاب، یا گوگل، بدون افشای اطلاعات کاربری داشته باشند.
مزایای کلیدی OAuth2:
امنیت: OAuth2 تضمین می کند که اعتبار کاربر هرگز با برنامه های شخص ثالث به اشتراک گذاشته نمی شود.
انعطاف پذیری: موارد استفاده مختلف را از طریق انواع مختلف کمک هزینه پشتیبانی می کند.
مقیاس پذیری: مناسب برای برنامه های کاربردی در هر اندازه، از استارتاپ های کوچک گرفته تا شرکت های بزرگ.
درک OAuth2 برای توسعه دهندگانی که قصد دارند مکانیسم های احراز هویت ایمن و کارآمد را در برنامه های خود پیاده سازی کنند، بسیار مهم است.
انواع کمک هزینه OAuth2
OAuth2 چندین نوع کمک مالی را تعریف می کند که هر کدام برای سناریوهای مختلف مناسب هستند:
کد مجوز: مناسب برای برنامه های سمت سرور. این شامل تبادل کد مجوز برای یک نشانه دسترسی است.
ضمنی: برای برنامه های سمت مشتری طراحی شده است، جایی که توکن ها مستقیماً بدون کد میانی بازگردانده می شوند.
اعتبار رمز عبور مالک منبع: امکان مبادله اعتبار کاربری برای توکن ها را می دهد. به طور معمول در برنامه های کاربردی بسیار قابل اعتماد استفاده می شود.
اعتبار مشتری: برای احراز هویت ماشین به ماشین بدون دخالت کاربر.
در حالی که OAuth2 از چندین نوع کمک مالی پشتیبانی می کند، این راهنما بر روی آن تمرکز خواهد کرد کد مجوز نوع گرنت که ایمن ترین و پرکاربردترین برای برنامه های تحت وب است.
شروع کار با OAuth2 در Spring Boot
بیایید به پیاده سازی OAuth2 در یک برنامه Spring Boot با استفاده از آن بپردازیم authorization_code نوع کمک مالی
پیش نیازها
کیت توسعه جاوا (JDK) 11 یا بالاتر
Spring Boot 2.7+
ابزار ساخت Maven یا Gradle
یک حساب ارائه دهنده OAuth2 (به عنوان مثال، Google، GitHub)
مرحله 1: راه اندازی پروژه بوت بهار
ابتدا یک پروژه Spring Boot جدید با استفاده از Spring Initializr ایجاد کنید:
پروژه: پروژه Maven
زبان: جاوا
چکمه بهاره: 2.7.x یا بالاتر
وابستگی ها:
وب بهار
امنیت بهار
مشتری OAuth2
برگ آویشن (اختیاری، برای نمایش رندر)
پروژه را دانلود کرده و در IDE خود وارد کنید.
مرحله 2: پیکربندی OAuth2 Client
در شما application.properties یا application.yml، تنظیمات مشتری OAuth2 را پیکربندی کنید. در اینجا نمونه ای از استفاده از Google به عنوان ارائه دهنده OAuth2 آورده شده است:
spring:
security:
oauth2:
client:
registration:
google:
client-id: YOUR_GOOGLE_CLIENT_ID
client-secret: YOUR_GOOGLE_CLIENT_SECRET
scope: profile, email
provider:
google:
authorization-uri: https://accounts.google.com/o/oauth2/v2/auth
token-uri: https://www.googleapis.com/oauth2/v4/token
user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
user-name-attribute: sub
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توجه داشته باشید: تعویض کنید YOUR_GOOGLE_CLIENT_ID و YOUR_GOOGLE_CLIENT_SECRET با اعتبار واقعی خود از ارائه دهنده OAuth2.
مرحله 3: ایجاد تنظیمات امنیتی
یک کلاس پیکربندی امنیتی برای مدیریت ورود به سیستم OAuth2 و محافظت از نقاط پایانی خود ایجاد کنید.
package com.example.oauth2demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests(authorize -> authorize
.antMatchers(“https://dev.to/”, “/login”).permitAll()
.anyRequest().authenticated()
)
.oauth2Login(oauth2 -> oauth2
.loginPage(“/login”)
.defaultSuccessURL(“/home”, true)
);
return http.build();
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مرحله 4: ایجاد کنترلرها
کنترل کننده هایی برای مدیریت صفحه فرود، ورود به سیستم و صفحه اصلی ایجاد کنید.
package com.example.oauth2demo.controller;
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping(“https://dev.to/”)
public String index() {
return “index”; // Return index.html
}
@GetMapping(“/login”)
public String login() {
return “login”; // Return login.html
}
@GetMapping(“/home”)
public String home(OAuth2AuthenticationToken authentication, Model model) {
model.addAttribute(“user”, authentication.getPrincipal().getAttributes());
return “home”; // Return home.html
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مرحله 5: ایجاد Views
با استفاده از Thymeleaf، قالب های ساده HTML برای آن ایجاد کنید index.html، login.html، و home.html.
index.html
login.html
home.html
xmlns:th=”http://www.thymeleaf.org”>
Home
Home
Welcome, th:text=”${user[‘name’]}”>!
Email: th:text=”${user[’email’]}”>
href=”/logout”>Logout
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مرحله 6: اجرای برنامه
برنامه Spring Boot خود را اجرا کنید. حرکت به http://localhost:8080/ و روی پیوند “ورود با گوگل” کلیک کنید. شما باید به صفحه رضایت OAuth2 Google هدایت شوید. پس از احراز هویت موفقیت آمیز، به صفحه اصلی هدایت می شوید که اطلاعات کاربر خود را نمایش می دهد.
تقویت اپلیکیشن
مدیریت ارائه دهندگان مختلف OAuth2
میتوانید چندین ارائهدهنده OAuth2 را با افزودن تنظیمات آنها به خود پیکربندی کنید application.yml یا application.properties. به عنوان مثال، برای اضافه کردن GitHub:
spring:
security:
oauth2:
client:
registration:
github:
client-id: YOUR_GITHUB_CLIENT_ID
client-secret: YOUR_GITHUB_CLIENT_SECRET
scope: read:user
provider:
github:
authorization-uri: https://github.com/login/oauth/authorize
token-uri: https://github.com/login/oauth/access_token
user-info-uri: https://api.github.com/user
user-name-attribute: id
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سفارشی کردن اطلاعات کاربر
شما می توانید نحوه پردازش اطلاعات کاربر را با اجرای یک سفارشی سفارشی کنید OAuth2UserService.
package com.example.oauth2demo.service;
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Service;
@Service
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
OAuth2User user = super.loadUser(userRequest);
// Add custom processing here
return user;
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سپس، خود را به روز کنید SecurityConfig برای استفاده از سرویس کاربر سفارشی:
.oauth2Login(oauth2 -> oauth2
.userInfoEndpoint(userInfo -> userInfo
.userService(customOAuth2UserService)
)
.loginPage(“/login”)
.defaultSuccessURL(“/home”, true)
)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نتیجه گیری
پیاده سازی OAuth2 در Spring Boot با استفاده از authorization_code نوع گرانت روشی قدرتمند برای ایمن سازی برنامه های شما و مدیریت موثر احراز هویت کاربر است. با دنبال کردن این راهنمای گام به گام، میتوانید OAuth2 را با ارائهدهنده محبوبی مانند Google راهاندازی کنید و آن را متناسب با نیازهای خاص خود سفارشی کنید.
همانطور که با OAuth2 راحتتر میشوید، میتوانید انواع دیگر کمک مالی و پیکربندیهای پیشرفتهتر را برای افزایش امنیت و عملکرد برنامههای خود کاوش کنید. کد نویسی مبارک!
بیایید وصل شویم!
📧 یک پست را از دست ندهید! مشترک شدن در خبرنامه من!➡️ لینکدین🚩 پست اصلی☕ برای من یک قهوه بخر
استاد OAuth2 در Spring Boot با راهنمای گام به گام ما! برنامه های خود را با مثال های کد عملی ایمن کنید
در چشم انداز دیجیتالی به هم پیوسته امروزی، ایمن سازی برنامه ها و مدیریت احراز هویت کاربر بسیار مهم است. یکی از قوی ترین و گسترده ترین پروتکل ها برای مجوز، OAuth2 است. چه در حال ساخت یک برنامه وب، برنامه تلفن همراه یا هر سرویسی باشید که به احراز هویت کاربر نیاز دارد، درک OAuth2 ضروری است.
این راهنما شما را در پیاده سازی OAuth2 در یک برنامه Spring Boot با تمرکز بر روی آن راهنمایی می کند authorization_code
نوع کمک مالی ما مفاهیم را تجزیه میکنیم، بررسی میکنیم که چرا OAuth2 مهم است، و مثالهای کد جاوا واضحی را ارائه میکنیم تا به شما در شروع کار کمک کند، حتی اگر مبتدی باشید.
OAuth2 چیست و چرا مهم است؟
OAuth2 (Open Authorization 2) یک پروتکل استاندارد صنعتی برای مجوز است. این اجازه می دهد تا برنامه ها دسترسی محدودی به حساب های کاربری در یک سرویس HTTP، مانند فیس بوک، گیت هاب، یا گوگل، بدون افشای اطلاعات کاربری داشته باشند.
مزایای کلیدی OAuth2:
- امنیت: OAuth2 تضمین می کند که اعتبار کاربر هرگز با برنامه های شخص ثالث به اشتراک گذاشته نمی شود.
- انعطاف پذیری: موارد استفاده مختلف را از طریق انواع مختلف کمک هزینه پشتیبانی می کند.
- مقیاس پذیری: مناسب برای برنامه های کاربردی در هر اندازه، از استارتاپ های کوچک گرفته تا شرکت های بزرگ.
درک OAuth2 برای توسعه دهندگانی که قصد دارند مکانیسم های احراز هویت ایمن و کارآمد را در برنامه های خود پیاده سازی کنند، بسیار مهم است.
انواع کمک هزینه OAuth2
OAuth2 چندین نوع کمک مالی را تعریف می کند که هر کدام برای سناریوهای مختلف مناسب هستند:
- کد مجوز: مناسب برای برنامه های سمت سرور. این شامل تبادل کد مجوز برای یک نشانه دسترسی است.
- ضمنی: برای برنامه های سمت مشتری طراحی شده است، جایی که توکن ها مستقیماً بدون کد میانی بازگردانده می شوند.
- اعتبار رمز عبور مالک منبع: امکان مبادله اعتبار کاربری برای توکن ها را می دهد. به طور معمول در برنامه های کاربردی بسیار قابل اعتماد استفاده می شود.
- اعتبار مشتری: برای احراز هویت ماشین به ماشین بدون دخالت کاربر.
در حالی که OAuth2 از چندین نوع کمک مالی پشتیبانی می کند، این راهنما بر روی آن تمرکز خواهد کرد کد مجوز نوع گرنت که ایمن ترین و پرکاربردترین برای برنامه های تحت وب است.
شروع کار با OAuth2 در Spring Boot
بیایید به پیاده سازی OAuth2 در یک برنامه Spring Boot با استفاده از آن بپردازیم authorization_code
نوع کمک مالی
پیش نیازها
- کیت توسعه جاوا (JDK) 11 یا بالاتر
- Spring Boot 2.7+
- ابزار ساخت Maven یا Gradle
- یک حساب ارائه دهنده OAuth2 (به عنوان مثال، Google، GitHub)
مرحله 1: راه اندازی پروژه بوت بهار
ابتدا یک پروژه Spring Boot جدید با استفاده از Spring Initializr ایجاد کنید:
- پروژه: پروژه Maven
- زبان: جاوا
- چکمه بهاره: 2.7.x یا بالاتر
-
وابستگی ها:
- وب بهار
- امنیت بهار
- مشتری OAuth2
- برگ آویشن (اختیاری، برای نمایش رندر)
پروژه را دانلود کرده و در IDE خود وارد کنید.
مرحله 2: پیکربندی OAuth2 Client
در شما application.properties
یا application.yml
، تنظیمات مشتری OAuth2 را پیکربندی کنید. در اینجا نمونه ای از استفاده از Google به عنوان ارائه دهنده OAuth2 آورده شده است:
spring:
security:
oauth2:
client:
registration:
google:
client-id: YOUR_GOOGLE_CLIENT_ID
client-secret: YOUR_GOOGLE_CLIENT_SECRET
scope: profile, email
provider:
google:
authorization-uri: https://accounts.google.com/o/oauth2/v2/auth
token-uri: https://www.googleapis.com/oauth2/v4/token
user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo
user-name-attribute: sub
توجه داشته باشید: تعویض کنید YOUR_GOOGLE_CLIENT_ID
و YOUR_GOOGLE_CLIENT_SECRET
با اعتبار واقعی خود از ارائه دهنده OAuth2.
مرحله 3: ایجاد تنظیمات امنیتی
یک کلاس پیکربندی امنیتی برای مدیریت ورود به سیستم OAuth2 و محافظت از نقاط پایانی خود ایجاد کنید.
package com.example.oauth2demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests(authorize -> authorize
.antMatchers("https://dev.to/", "/login").permitAll()
.anyRequest().authenticated()
)
.oauth2Login(oauth2 -> oauth2
.loginPage("/login")
.defaultSuccessURL("/home", true)
);
return http.build();
}
}
مرحله 4: ایجاد کنترلرها
کنترل کننده هایی برای مدیریت صفحه فرود، ورود به سیستم و صفحه اصلی ایجاد کنید.
package com.example.oauth2demo.controller;
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MainController {
@GetMapping("https://dev.to/")
public String index() {
return "index"; // Return index.html
}
@GetMapping("/login")
public String login() {
return "login"; // Return login.html
}
@GetMapping("/home")
public String home(OAuth2AuthenticationToken authentication, Model model) {
model.addAttribute("user", authentication.getPrincipal().getAttributes());
return "home"; // Return home.html
}
}
مرحله 5: ایجاد Views
با استفاده از Thymeleaf، قالب های ساده HTML برای آن ایجاد کنید index.html
، login.html
، و home.html
.
index.html
login.html
home.html
xmlns:th="http://www.thymeleaf.org">
Home
Home
Welcome, th:text="${user['name']}">!
Email: th:text="${user['email']}">
href="/logout">Logout
مرحله 6: اجرای برنامه
برنامه Spring Boot خود را اجرا کنید. حرکت به http://localhost:8080/
و روی پیوند “ورود با گوگل” کلیک کنید. شما باید به صفحه رضایت OAuth2 Google هدایت شوید. پس از احراز هویت موفقیت آمیز، به صفحه اصلی هدایت می شوید که اطلاعات کاربر خود را نمایش می دهد.
تقویت اپلیکیشن
مدیریت ارائه دهندگان مختلف OAuth2
میتوانید چندین ارائهدهنده OAuth2 را با افزودن تنظیمات آنها به خود پیکربندی کنید application.yml
یا application.properties
. به عنوان مثال، برای اضافه کردن GitHub:
spring:
security:
oauth2:
client:
registration:
github:
client-id: YOUR_GITHUB_CLIENT_ID
client-secret: YOUR_GITHUB_CLIENT_SECRET
scope: read:user
provider:
github:
authorization-uri: https://github.com/login/oauth/authorize
token-uri: https://github.com/login/oauth/access_token
user-info-uri: https://api.github.com/user
user-name-attribute: id
سفارشی کردن اطلاعات کاربر
شما می توانید نحوه پردازش اطلاعات کاربر را با اجرای یک سفارشی سفارشی کنید OAuth2UserService
.
package com.example.oauth2demo.service;
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.stereotype.Service;
@Service
public class CustomOAuth2UserService extends DefaultOAuth2UserService {
@Override
public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {
OAuth2User user = super.loadUser(userRequest);
// Add custom processing here
return user;
}
}
سپس، خود را به روز کنید SecurityConfig
برای استفاده از سرویس کاربر سفارشی:
.oauth2Login(oauth2 -> oauth2
.userInfoEndpoint(userInfo -> userInfo
.userService(customOAuth2UserService)
)
.loginPage("/login")
.defaultSuccessURL("/home", true)
)
نتیجه گیری
پیاده سازی OAuth2 در Spring Boot با استفاده از authorization_code
نوع گرانت روشی قدرتمند برای ایمن سازی برنامه های شما و مدیریت موثر احراز هویت کاربر است. با دنبال کردن این راهنمای گام به گام، میتوانید OAuth2 را با ارائهدهنده محبوبی مانند Google راهاندازی کنید و آن را متناسب با نیازهای خاص خود سفارشی کنید.
همانطور که با OAuth2 راحتتر میشوید، میتوانید انواع دیگر کمک مالی و پیکربندیهای پیشرفتهتر را برای افزایش امنیت و عملکرد برنامههای خود کاوش کنید. کد نویسی مبارک!
بیایید وصل شویم!
📧 یک پست را از دست ندهید! مشترک شدن در خبرنامه من!
➡️ لینکدین
🚩 پست اصلی
☕ برای من یک قهوه بخر