ساخت API امن با Spring Boot و Angular 6 — از صفر تا صد

۴۳۵ بازدید
آخرین به‌روزرسانی: ۲۶ شهریور ۱۴۰۲
زمان مطالعه: ۷ دقیقه
دانلود PDF مقاله
ساخت API امن با Spring Boot و Angular 6 — از صفر تا صدساخت API امن با Spring Boot و Angular 6 — از صفر تا صد

امنیت وب امروزه بسیار حائز اهمیت است. ایجاد و استفاده از سرویس‌ها بدون در نظر گرفتن بحث امنیت، امروزه امری کاملاً پر ریسک تلقی می‌شود. اگر می‌خواهید اطلاعات بسیار حساسی را انتقال دهید، باید از یک لایه امنیتی کامل برای حفاظت از داده‌های محرمانه استفاده کنید. چون امن ساختن سیستم‌ها کاملاً مهم است. API امن یکی از مهمترین اجزای این ساختار امنیتی را تشکیل می‌دهد.

997696

بنابراین هر زمان که از فراخوانی API یا هر چیز دیگری استفاده می‌کنیم، باید ابتدا امنیت داده‌های حساس را در نظر بگریم. انواع بسیار مختلفی از روش‌های امنیتی برای امن سازی داده‌ها وجود دارند. در این نوشته نمونه جامعی از امنیت Spring را بررسی می‌کنیم. در این راهنما از Spring boot و angular برای نمایش چگونگی امن سازی اپلیکیشن‌های انگولار با استفاده از احراز هویت ساده از طریق Spring Security بهره می‌گیریم. در این راهنما با روش استفاده از Spring Boot برای ساخت سریع API وب آشنا می‌شویم و به طور خلاصه با استفاده از یک لایه بک‌اند جاوا، وابستگی maven امنیت Spring را برای امن سازی اپلیکیشن به خدمت می‌گیریم. همچنین از پلتفرم انگولار برای سهولت ساخت اپلیکیشن وب به کمک پایگاه داده خودمان استفاده می‌کنیم.

پیش از آغاز توسعه اپلیکیشن نمونه‌ای از آن چه قرار است در بخش‌های بعدی بسازیم را نشان می‌دهیم:

پیش‌نمایش اپلیکیشن انگولار

در تصویر فوق نمونه‌ای از اپلیکیشن به نام my heroes می‌بینید که فهرستی از نام‌های قهرمانان را نمایش می‌دهد. در ابتدا نقطه انتهایی را به صورت غیر امن ارائه می‌کنیم تا انگولار بتواند فهرست نام‌ها را نمایش دهد. سپس یک نقطه انتهایی REST امن ارائه می‌کنیم و تغییرات ضروری را در اپلیکیشن انگولار ایجاد می‌کنیم تا با استفاده از احراز هویت ساده به داده‌ها دسترسی یابد.

فناوری‌های مورد استفاده:

  • Angular 6
  • Spring Boot 2.0.6
  • Java 1.8.0
  • Apache Maven 3.5.3
  • Visual Studio Code 1.28.2
  • Spring Tool Suite 3.9.5
  • Mysql 5.7.19

ساخت بک‌اند جاوا با استفاده از Spring Boot

روش‌های مختلفی برای ایجاد یک پروژه Spring Boot وجود دارد.

در ادامه فهرستی از این روش‌ها را می‌بینید:

ما قصد نداریم تک تک این اجزا را به تفصیل بررسی کنیم و صرفاً از Spring Tool Suite برای ایجاد اپلیکیشن کمک می‌گیریم.

ایجاد یک پروژه مقدماتی

به مسیر File->New->Spring Starter Project بروید و جزییات مورد نیاز را وارد کرده، وابستگی‌ها را بر اساس تصویر زیر تعیین کنید:

گام 1
گام 2

شما باید این وابستگی‌ها را به ترتیب انتخاب کنید تا به فایل maven به نام POM.xml اضافه شوند، سپس دکمه finish را بزند تا پروژه با کتابخانه‌های مورد نیاز ایجاد شود.

ایجاد یک پایگاه داده

یک جدول در پایگاه داده ایجاد می‌کنیم و سپس داده‌های مورد نیاز را در آن وارد می‌نماییم. در ادامه کوئری لازم برای ایجاد و درج رکوردها در جدول را مشاهده می‌کنید:

CREATE TABLE `heroes` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
insert  into `heroes`(`id`,`name`) values (1,'Aung San Suu Kyi'),(2,'Nelson Mandela'),(3,'Tony Blair'),(4,'Dr. Abdul Kalam'),(5,'Srinivas Ramanujan'),(6,'Stephen Hawking'),(7,'Bob Geldof'),(8,'Margaret Thatcher'),(9,'Winston Churchill'),(10,'Bob Dylan'),(11,'Bill Gates'),(12,'Steve Jobs'),(13,'Dalai Lama'),(14,'David Attenborough'),(15,'Mary Robinson'),(16,'Tim Berners-Lee')ک;

افزودن نقطه انتهایی REST غیر امن

در این مرحله کافی است کد زیر را در هر فایل اضافه کنید:

1. فایل Application.properties

server.port=7070
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.generate-ddl=true

2. فایل SecureRestServiceApplication.java

package com.example.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
@EntityScan(basePackages = "com.example.model")
@EnableJpaRepositories(basePackages = {"com.example.repository"})
@ComponentScan(basePackages = "com.example.controller")
public class SecureRestServiceApplication {
public static void main(String[] args) {
SpringApplication.run(SecureRestServiceApplication.class, args);
}
}

3. فایل HeroesController.java

package com.example.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.model.Heroes;
import com.example.repository.HeroesRepository;

@RestController
@RequestMapping("/api/")
public class HeroesController {
	@Autowired
	HeroesRepository heroesRepository;
	
	@RequestMapping("/heroes")	
	@CrossOrigin("http://localhost:4200")
	public List<Heroes> getHeroes(){
		return heroesRepository.findAll();
	}
}

4. فایل Heroes.java

package com.example.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "heroes")
public class Heroes {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
public Heroes() {}
public Heroes(int id, String name) {
super();
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

5. فایل HeroesRepository.java

package com.example.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import com.example.model.Heroes;
public interface HeroesRepository extends JpaRepository<Heroes, Integer> {}

6. اینک اپلیکیشن را در postman یا هر مرورگر دیگر اجرا کنید

اکنون می‌توانید اپلیکیشن را ری‌استارت کنید و مرورگر یا postman را باز کرده و به آدرس http://localhost:7070/api/heroes بروید. در این زمان باید اطلاعات قهرمانان را در قالب JSON به صورت زیر ببینید:

خروجی JSON در postman

ساخت اپلیکیشن فرانت‌اند با استفاده از انگولار

در این مرحله یک فرانت‌اند برای اپلیکیشن خود می‌سازیم. بدین منظور از Angular CLI برای ساخت اپلیکیشن خود استفاده خواهیم کرد.

دستور زیر را در اعلان فرمان خود وارد نمایید:

ng new secure-hero-app

این دستور ممکن است چند دقیقه برای ساخت فایل‌های پیکربندی و گرد هم آوردن همه وابستگی‌ها طول بکشد. دستور فوق یک اپلیکیشن بسیار ساده برای شما ایجاد می‌کند. زمانی که دستور فوق اجرا شد، دستور زیر را اجرا کنید:

ng serve –open

این دستور اپلیکیشن را آغاز می‌کند و مرورگر پیش‌فرض شما را به طور خودکار روی آدرس http://localhost:4200 باز می‌کند تا بتوانید صفحه پیش‌فرض انگولار را ببینید.

بر اساس رای ۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
bhattkeval
۱ دیدگاه برای «ساخت API امن با Spring Boot و Angular 6 — از صفر تا صد»

خیلی ممنون موفق باشید

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *