国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot + JWT = 安全無憂的RESTful API

這篇具有很好參考價值的文章主要介紹了Spring Boot + JWT = 安全無憂的RESTful API。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

在構(gòu)建現(xiàn)代Web應(yīng)用程序時,安全性是一個不可或缺的要素。JSON Web Token(JWT)提供了一種簡潔的方式來保護(hù)我們的RESTful接口。在本篇博客中,我們將一步步探索如何在Spring Boot應(yīng)用中整合JWT,確保你的API安全、高效且易于管理。

JWT簡介

JWT(JSON Web Token)是一個開放標(biāo)準(zhǔn)(RFC 7519),它定義了一種緊湊且自包含的方式,用于在各方之間作為JSON對象安全地傳輸信息。這些信息可以被驗證和信任,因為它是數(shù)字簽名的。

為什么選擇JWT

對于Web應(yīng)用程序,尤其是當(dāng)涉及到單頁面應(yīng)用(SPA)時,JWT提供了一種有效的認(rèn)證機(jī)制。與傳統(tǒng)的Session認(rèn)證相比,JWT是無狀態(tài)的,不需要在服務(wù)器上存儲用戶的狀態(tài)信息,這使得它非常適合于分布式微服務(wù)架構(gòu)。

Spring Boot中整合JWT

在Spring Boot中整合JWT,我們需要完成以下步驟:

  1. 添加依賴
  2. 配置JWT庫
  3. 實現(xiàn)JWT認(rèn)證過濾器
  4. 配置Spring Security
  5. 測試保護(hù)的API

實戰(zhàn)演練:構(gòu)建一個示例應(yīng)用

讓我們通過構(gòu)建一個簡單的Spring Boot應(yīng)用來演示JWT的整合過程。

添加依賴

首先,在你的pom.xml中添加以下依賴:

<dependencies>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!-- 其他依賴 -->
</dependencies>

配置JWT庫

接下來,我們需要創(chuàng)建一個工具類來生成和解析JWT:

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;

public class JwtUtil {
    private static final String KEY = "mySecretKey";

    public static String generateToken(String username) {
        return Jwts.builder()
                .setSubject(username)
                .setExpiration(new Date(System.currentTimeMillis() + 3600000)) // 1小時有效期
                .signWith(SignatureAlgorithm.HS512, KEY)
                .compact();
    }

    public static String validateTokenAndGetSubject(String token) {
        return Jwts.parser()
                .setSigningKey(KEY)
                .parseClaimsJws(token)
                .getBody()
                .getSubject();
    }
}

實現(xiàn)JWT認(rèn)證過濾器

現(xiàn)在,我們創(chuàng)建一個JWT認(rèn)證過濾器來驗證令牌的有效性:

import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import javax.servlet.FilterChain;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;

public class JwtAuthenticationFilter extends OncePerRequestFilter {
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) {
        String token = request.getHeader("Authorization");
        if (token != null && token.startsWith("Bearer ")) {
            token = token.substring(7);
            String username = JwtUtil.validateTokenAndGetSubject(token);
            if (username != null) {
                UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(username, null, new ArrayList<>());
                SecurityContextHolder.getContext().setAuthentication(auth);
            }
        }
        filterChain.doFilter(request, response);
    }
}

配置Spring Security

我們需要配置Spring Security來使用我們的JWT過濾器:

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
            .authorizeRequests()
            .antMatchers("/api/public").permitAll()
            .anyRequest().authenticated()
            .and()
            .addFilter(new JwtAuthenticationFilter(authenticationManager()));
    }
}

測試保護(hù)的API

最后,我們創(chuàng)建一個受保護(hù)的API端點(diǎn)和一個公開端點(diǎn)作為測試:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping("/api/public")
    public String publicEndpoint() {
        return "Public content";
    }

    @GetMapping("/api/private")
    public String privateEndpoint() {
        return "Private content";
    }
}

JWT的最佳實踐

  • 保持密鑰的安全
  • 設(shè)置合理的過期時間
  • 處理令牌失效的情況
  • 只通過HTTPS傳輸JWT

總結(jié)

通過這個簡單的例子,我們看到了如何在Spring Boot應(yīng)用程序中使用JWT進(jìn)行安全認(rèn)證。JWT的整合提高了我們API的安全性,同時保持了良好的性能和可擴(kuò)展性。如果你想要構(gòu)建一個安全且現(xiàn)代的Web應(yīng)用程序,那么Spring Boot和JWT無疑是你的不二之選。文章來源地址http://www.zghlxwxcb.cn/news/detail-787037.html

到了這里,關(guān)于Spring Boot + JWT = 安全無憂的RESTful API的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java中使用Spring Boot創(chuàng)建RESTful API

    在當(dāng)今的Web開發(fā)中,構(gòu)建RESTful API已經(jīng)成為一個常見的任務(wù)。Spring Boot框架提供了一種簡單、快速和高效的方式來創(chuàng)建和部署這樣的API。本文將引導(dǎo)您逐步了解如何使用Spring Boot來構(gòu)建和開發(fā)RESTful API。 首先,我們需要設(shè)置開發(fā)環(huán)境。確保您的系統(tǒng)上已經(jīng)安裝了以下軟件: Ja

    2024年02月10日
    瀏覽(26)
  • Spring Boot 3.x- RESTful API集成SpringDoc&Swagger-UI

    Spring Boot 3.x- RESTful API集成SpringDoc&Swagger-UI

    系列文章:Spring Boot 3.x 系列教程 springdoc-openapi 幫助使用Spring Boot項目自動化API文檔的生成。 springdoc-openapi 的工作原理是在運(yùn)行時檢查應(yīng)用程序,根據(jù)Spring配置、類結(jié)構(gòu)和各種注釋推斷 API 語義。 自動生成 JSON/YAML 和 HTML 格式的 API 文檔。這個文檔可以通過使用 swagger-api 注解來

    2024年01月25日
    瀏覽(21)
  • Spring Boot學(xué)習(xí)隨筆- RestFul API(@RestController、@RequestBody、@PathVariable),使用ResponseEntity+HttpStatus作為返回值

    學(xué)習(xí)視頻:【編程不良人】2021年SpringBoot最新最全教程 什么是REST REST 全稱是 Resource Representational State Transfer ,中文意思是表述性狀態(tài)轉(zhuǎn)移,它首次出現(xiàn)在2000年Roy Fielding的博士論文中,Roy Fielding是HTTP規(guī)范的主要編寫者之一。他在論文中表示:我這篇文章的目的就是想在符合

    2024年02月04日
    瀏覽(27)
  • Spring Boot 優(yōu)雅集成 Spring Security 5.7(安全框架)與 JWT(雙令牌機(jī)制)

    Spring Boot 優(yōu)雅集成 Spring Security 5.7(安全框架)與 JWT(雙令牌機(jī)制)

    本章節(jié)將介紹 Spring Boot 集成 Spring Security 5.7(安全框架)。 ?? Spring Boot 2.x 實踐案例(代碼倉庫) Spring Security 是一個能夠為基于 Spring 的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。 它提供了一組可以在 Spring 應(yīng)用上下文中配置的 Bean,充分利用了 Spring

    2024年02月12日
    瀏覽(53)
  • Spring Boot 3 + JWT + Security 聯(lián)手打造安全帝國:一篇文章讓你掌握未來!

    Spring Boot 3 + JWT + Security 聯(lián)手打造安全帝國:一篇文章讓你掌握未來!

    Spring Security 已經(jīng)成為 java 后臺權(quán)限校驗的第一選擇.今天就通過讀代碼的方式帶大家深入了解一下Security,本文主要是基于開源項目spring-boot-3-jwt-security來講解Spring Security + JWT(Json Web Token).實現(xiàn)用戶鑒權(quán),以及權(quán)限校驗. 所有代碼基于 jdk17+ 構(gòu)建.現(xiàn)在讓我們開始吧! Springboot 3.0 Spri

    2024年02月07日
    瀏覽(89)
  • 用API Key保護(hù)Spring Boot 接口的安全

    用API Key保護(hù)Spring Boot 接口的安全

    ?????安全性在REST API開發(fā)中扮演著重要的角色。一個不安全的REST API可以直接訪問到后臺系統(tǒng)中的敏感數(shù)據(jù)。因此,企業(yè)組織需要關(guān)注API安全性。 ????????Spring Security ?提供了各種機(jī)制來保護(hù)我們的? REST API 。其中之一是? API ?密鑰。API 密鑰是客戶端在調(diào)用 API 調(diào)用時提

    2024年02月12日
    瀏覽(19)
  • 【Spring Boot】SpringBoot 優(yōu)雅整合Swagger Api 自動生成文檔

    【Spring Boot】SpringBoot 優(yōu)雅整合Swagger Api 自動生成文檔

    Swagger 是一套 RESTful API 文檔生成工具,可以方便地生成 API 文檔并提供 API 調(diào)試頁面。 而 Spring Boot 是一款非常優(yōu)秀的 Java Web 開發(fā)框架,它可以非常方便地構(gòu)建 Web 應(yīng)用程序。 在本文中,我們將介紹如何使用 Swagger 以及如何在 Spring Boot 中整合 Swagger 。 首先,在 pom.xml 文件中添

    2023年04月22日
    瀏覽(25)
  • SpringBoot生成RESTful API文檔

    SpringBoot生成RESTful API文檔

    由于我一開始學(xué)習(xí)的SpringBoot是3以上版本,所以我這里用到的也是支持和SpringBoot3能夠整合的SpringDoc 這里先說一下,其實SpringDoc就是Swagger3版本,我一開始整合的2版本,比較麻煩況且最后SpringBoot程序都啟動不了了,后面查資料才看到SpringDoc,好使的一批??! 官網(wǎng)地址:http:

    2024年02月08日
    瀏覽(36)
  • Spring boot 整合 JWT

    Spring boot 整合 JWT

    第一章 Java線程池技術(shù)應(yīng)用 第二章 CountDownLatch和Semaphone的應(yīng)用 第三章 Spring Cloud 簡介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Spring Cloud Netflix 之 Hystrix 第九章 代碼管理gitlab 使用 第十章 Spr

    2024年02月05日
    瀏覽(19)
  • 深入探討Spring Boot:實現(xiàn)一個完整的RESTful應(yīng)用程序

    在這篇博客中,我們將深入探討如何使用Spring Boot構(gòu)建一個完整的RESTful應(yīng)用程序,數(shù)據(jù)庫選擇MySQL。我們將通過實現(xiàn)一個簡單的用戶管理系統(tǒng)來演示Spring Boot的強(qiáng)大功能。 首先,訪問Spring Initializr,選擇以下依賴項: Web:用于創(chuàng)建Web應(yīng)用程序 JPA:用于訪問數(shù)據(jù)庫 MySQL:用于連

    2024年02月03日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包