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

如何在 Spring Boot 中使用 OAuth2

這篇具有很好參考價(jià)值的文章主要介紹了如何在 Spring Boot 中使用 OAuth2。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在 Spring Boot 中使用 OAuth2

OAuth2 是一種授權(quán)協(xié)議,用于授權(quán)第三方應(yīng)用程序訪問(wèn)受保護(hù)的資源。Spring Security 是一個(gè)強(qiáng)大的安全框架,支持 OAuth2 協(xié)議。在本文中,我們將介紹如何在 Spring Boot 中使用 Spring Security 實(shí)現(xiàn) OAuth2 認(rèn)證和授權(quán)。

springboot集成oauth2,Java 教程,spring boot,java,后端

什么是 OAuth2

OAuth2 是一種流行的授權(quán)協(xié)議,用于授權(quán)第三方應(yīng)用程序訪問(wèn)受保護(hù)的資源。OAuth2 協(xié)議定義了四種角色:資源所有者、客戶端、授權(quán)服務(wù)器和資源服務(wù)器。資源所有者是資源的擁有者,客戶端是請(qǐng)求訪問(wèn)資源的應(yīng)用程序,授權(quán)服務(wù)器是授權(quán)客戶端訪問(wèn)資源的服務(wù)器,資源服務(wù)器是托管受保護(hù)資源的服務(wù)器。

OAuth2 協(xié)議涉及以下幾個(gè)步驟:

  1. 客戶端向授權(quán)服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求授權(quán)訪問(wèn)某個(gè)資源。
  2. 授權(quán)服務(wù)器向資源所有者詢問(wèn)是否授權(quán)客戶端訪問(wèn)該資源。
  3. 如果資源所有者授權(quán)客戶端訪問(wèn)該資源,則授權(quán)服務(wù)器向客戶端頒發(fā)訪問(wèn)令牌。
  4. 客戶端使用訪問(wèn)令牌向資源服務(wù)器請(qǐng)求訪問(wèn)受保護(hù)的資源。

OAuth2 協(xié)議定義了多種授權(quán)方式,包括授權(quán)碼模式、隱式授權(quán)模式、密碼模式和客戶端憑證模式。每種授權(quán)方式都適用于不同的場(chǎng)景。

Spring Security OAuth2

Spring Security 是一個(gè)強(qiáng)大的安全框架,支持 OAuth2 協(xié)議。Spring Security OAuth2 提供了一組類和接口,用于實(shí)現(xiàn) OAuth2 認(rèn)證和授權(quán)。Spring Security OAuth2 支持多種授權(quán)方式,包括授權(quán)碼模式、隱式授權(quán)模式、密碼模式和客戶端憑證模式。

Spring Boot 中使用 OAuth2

在 Spring Boot 中使用 OAuth2,我們需要添加以下依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.security.oauth.boot</groupId>
    <artifactId>spring-security-oauth2-autoconfigure</artifactId>
</dependency>

Spring Boot 會(huì)自動(dòng)配置 Spring Security 和 Spring Security OAuth2。

為了使用 OAuth2,我們需要定義以下三個(gè)組件:

  1. 授權(quán)服務(wù)器:用于頒發(fā)訪問(wèn)令牌。
  2. 資源服務(wù)器:用于托管受保護(hù)的資源。
  3. 客戶端:用于請(qǐng)求訪問(wèn)受保護(hù)的資源。

配置授權(quán)服務(wù)器

我們可以使用 @EnableAuthorizationServer 注解來(lái)啟用授權(quán)服務(wù)器。以下是一個(gè)示例配置:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Autowired
    private UserDetailsService userDetailsService;

    @Bean
    public TokenStore tokenStore() {
        return new InMemoryTokenStore();
    }

    @Bean
    public DefaultTokenServices tokenServices() {
        DefaultTokenServices tokenServices = new DefaultTokenServices();
        tokenServices.setTokenStore(tokenStore());
        tokenServices.setSupportRefreshToken(true);
        tokenServices.setAccessTokenValiditySeconds(60 * 60);
        tokenServices.setRefreshTokenValiditySeconds(60 * 60 * 24);
        return tokenServices;
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        clients.inMemory()
                .withClient("client")
                .secret("secret")
                .authorizedGrantTypes("password", "refresh_token")
                .scopes("read", "write")
                .accessTokenValiditySeconds(60 * 60)
                .refreshTokenValiditySeconds(60 * 60 * 24);
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.tokenStore(tokenStore())
                .tokenServices(tokenServices())
                .authenticationManager(authenticationManager)
                .userDetailsService(userDetailsService);
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè) AuthorizationServerConfig 類,并使用 @EnableAuthorizationServer注解來(lái)啟用授權(quán)服務(wù)器。我們注入了 AuthenticationManager 和 UserDetailsService 對(duì)象,并定義了一個(gè) InMemoryTokenStore 對(duì)象來(lái)存儲(chǔ)訪問(wèn)令牌。

我們使用 configure 方法來(lái)配置客戶端詳細(xì)信息。在這個(gè)示例中,我們定義了一個(gè)名為 “client” 的客戶端,使用密碼模式和刷新令牌模式來(lái)授權(quán)訪問(wèn)資源。我們還定義了 read 和 write 兩個(gè)范圍,并設(shè)置訪問(wèn)令牌的有效期和刷新令牌的有效期。

我們使用 configure 方法來(lái)配置授權(quán)服務(wù)器的端點(diǎn)。在這個(gè)示例中,我們使用 tokenStore、tokenServices、authenticationManager 和 userDetailsService 屬性來(lái)配置授權(quán)服務(wù)器的端點(diǎn)。

配置資源服務(wù)器

我們可以使用 @EnableResourceServer 注解來(lái)啟用資源服務(wù)器。以下是一個(gè)示例配置:

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/api/**").authenticated()
                .anyRequest().permitAll();
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè) ResourceServerConfig 類,并使用 @EnableResourceServer 注解來(lái)啟用資源服務(wù)器。我們使用 configure 方法來(lái)配置資源服務(wù)器的安全性。在這個(gè)示例中,我們配置了 /api/** 路徑需要身份驗(yàn)證,其他路徑允許匿名訪問(wèn)。

配置客戶端

我們可以使用 @EnableOAuth2Client 注解來(lái)啟用 OAuth2 客戶端。以下是一個(gè)示例配置:

@Configuration
@EnableOAuth2Client
public class OAuth2ClientConfig {

    @Bean
    public OAuth2ProtectedResourceDetails clientCredentialsResourceDetails() {
        ClientCredentialsResourceDetails details = new ClientCredentialsResourceDetails();
        details.setAccessTokenUri("http://localhost:8080/oauth/token");
        details.setClientId("client");
        details.setClientSecret("secret");
        details.setGrantType("client_credentials");
        details.setScope(Arrays.asList("read", "write"));
        return details;
    }

    @Bean
    public RestTemplate restTemplate(OAuth2ClientContext oauth2ClientContext) {
        return new OAuth2RestTemplate(clientCredentialsResourceDetails(), oauth2ClientContext);
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè) OAuth2ClientConfig 類,并使用 @EnableOAuth2Client 注解來(lái)啟用 OAuth2 客戶端。我們定義了一個(gè) OAuth2ProtectedResourceDetails 對(duì)象,用于配置客戶端詳細(xì)信息。我們?cè)O(shè)置了訪問(wèn)令牌的 URI、客戶端 ID、客戶端密碼、授權(quán)類型、范圍等屬性。

我們還定義了一個(gè) RestTemplate 對(duì)象,并使用 OAuth2RestTemplate 類來(lái)包裝它。OAuth2RestTemplate 類會(huì)自動(dòng)處理 OAuth2 認(rèn)證,并在每個(gè)請(qǐng)求中包含訪問(wèn)令牌。

測(cè)試 OAuth2

我們可以使用以下代碼測(cè)試 OAuth2:

@RestController
@RequestMapping("/api")
public class ApiController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/hello")
    public String hello() {
        ResponseEntity<String> response = restTemplate.getForEntity("http://localhost:8080/hello", String.class);
        return response.getBody();
    }
}

在這個(gè)示例中,我們創(chuàng)建了一個(gè) ApiController 類,并定義了一個(gè) hello 方法。在 hello 方法中,我們使用 RestTemplate 對(duì)象發(fā)送 GET 請(qǐng)求,并訪問(wèn)受保護(hù)的資源。RestTemplate 對(duì)象會(huì)自動(dòng)處理 OAuth2 認(rèn)證。

總結(jié)

在本文中,我們介紹了如何在 Spring Boot 中使用 OAuth2。我們使用 Spring Security OAuth2 實(shí)現(xiàn)了授權(quán)服務(wù)器、資源服務(wù)器和客戶端,并使用 @EnableAuthorizationServer、@EnableResourceServer 和 @EnableOAuth2Client 注解來(lái)啟用它們。希望本文可以幫助你了解如何在 Spring Boot 中使用 OAuth2。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-634491.html

到了這里,關(guān)于如何在 Spring Boot 中使用 OAuth2的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring Authorization Server入門 (八) Spring Boot引入Security OAuth2 Client對(duì)接認(rèn)證服務(wù)

    Spring Authorization Server入門 (八) Spring Boot引入Security OAuth2 Client對(duì)接認(rèn)證服務(wù)

    在之前的文章中實(shí)現(xiàn)了一個(gè)認(rèn)證服務(wù),并且添加了一些自定義的內(nèi)容,現(xiàn)在暫時(shí)沒(méi)想到認(rèn)證服務(wù)的新內(nèi)容,本篇文章就先寫一下客戶端對(duì)接的吧,水一篇。 當(dāng)用戶通過(guò)客戶端去訪問(wèn)一個(gè)受限的資源時(shí),客戶端會(huì)檢測(cè)是否有登錄信息,沒(méi)有登錄信息會(huì)重定向至認(rèn)證服務(wù)器去請(qǐng)求

    2024年02月21日
    瀏覽(28)
  • spring security + oauth2 使用RedisTokenStore 以json格式存儲(chǔ)

    spring security + oauth2 使用RedisTokenStore 以json格式存儲(chǔ)

    1.項(xiàng)目架構(gòu) ?2.自己對(duì) TokenStore 的 redis實(shí)現(xiàn) 3.自定義序列化類 4.配置使用redis類型的?TokenStore 5.完成認(rèn)證模塊的編寫后,測(cè)試登錄 ? ?json已經(jīng)保存在數(shù)據(jù)庫(kù)了 但是!!!!!,保存沒(méi)問(wèn)題,取出來(lái)的時(shí)候就有問(wèn)題了,把這三個(gè)文件復(fù)制到資源服務(wù)器,讓資源服務(wù)器也用MyRedisTokenStore 的方式讀

    2024年02月14日
    瀏覽(23)
  • SpringBoot 如何使用 OAuth2 進(jìn)行認(rèn)證和授權(quán)

    OAuth2 是一種授權(quán)框架,可以用于實(shí)現(xiàn)第三方應(yīng)用程序訪問(wèn)用戶資源的安全性。在 SpringBoot 中,我們可以使用 Spring Security 和 Spring OAuth2 來(lái)實(shí)現(xiàn) OAuth2 的認(rèn)證和授權(quán)功能。本文將介紹如何在 SpringBoot 中使用 OAuth2 進(jìn)行認(rèn)證和授權(quán)。 在開(kāi)始介紹如何使用 OAuth2 進(jìn)行認(rèn)證和授權(quán)之前,

    2024年02月13日
    瀏覽(24)
  • Spring Security OAuth2詳解

    Spring Security OAuth2詳解

    spring security oauth2框架即spring security + OAuth2,spring security上一篇文章已經(jīng)講過(guò),接下來(lái)講講OAuth2,它是行業(yè)標(biāo)準(zhǔn)的授權(quán)協(xié)議,旨在為開(kāi)發(fā)人員提供簡(jiǎn)單易用的授權(quán)流程;OAuth 定義了四種角色: 資源所有者:能夠授予對(duì)受保護(hù)資源的訪問(wèn)權(quán)限的實(shí)體,當(dāng)資源所有者是一個(gè)人時(shí),

    2024年02月03日
    瀏覽(26)
  • 【OAuth2系列】Spring Cloud Gateway 作為OAuth2 Client接入第三方單點(diǎn)登錄代碼實(shí)踐

    【OAuth2系列】Spring Cloud Gateway 作為OAuth2 Client接入第三方單點(diǎn)登錄代碼實(shí)踐

    ? ? ? ? 在年初的時(shí)候我參與了一個(gè)項(xiàng)目,當(dāng)時(shí)是很多家公司協(xié)同完成這個(gè)項(xiàng)目,其中一個(gè)公司專門負(fù)責(zé)登錄這塊的內(nèi)容,需要我們的后端接入他們的單點(diǎn)登錄(OAuth2 授權(quán)碼模式),這塊接入工作是由我來(lái)負(fù)責(zé),我們的項(xiàng)目是微服務(wù)架構(gòu),經(jīng)過(guò)網(wǎng)上各種查閱資料發(fā)現(xiàn)網(wǎng)關(guān)作為

    2024年02月04日
    瀏覽(24)
  • Spring Security OAuth2.0 - 學(xué)習(xí)筆記

    Spring Security OAuth2.0 - 學(xué)習(xí)筆記

    OAuth2.0是一個(gè)開(kāi)放標(biāo)準(zhǔn),允許用戶授權(quán)第三方應(yīng)用程序訪問(wèn)他們存儲(chǔ)在另外的服務(wù)提供者上的信息,而不需要將用戶和密碼提供給第三方應(yīng)用或分享數(shù)據(jù)的所有內(nèi)容。 1)授權(quán)碼模式 2)簡(jiǎn)化模式 3)密碼模式 4)客戶端模式 普通令牌只是一個(gè)隨機(jī)的字符串,沒(méi)有特殊的意義,

    2024年02月16日
    瀏覽(59)
  • Spring Oauth2.0 自定義認(rèn)證模式

    在特定場(chǎng)景下,可能Oauth2自帶的4種認(rèn)證模式可能滿足不了我們?nèi)粘5氖褂?那么今天就為大家?guī)?lái)Oauth2自定義認(rèn)證模式。 知道你們肯定沒(méi)耐心讀完(總結(jié)一句話就是授權(quán)用的),有耐心的可以讀完下面的內(nèi)容介紹: 首先呢在這之前我們要搞清楚什么是Oauth , OAuth 是一個(gè)開(kāi)放標(biāo)準(zhǔn),該

    2024年02月16日
    瀏覽(21)
  • Spring Security實(shí)現(xiàn)OAuth2協(xié)議及實(shí)戰(zhàn)

    Spring Security實(shí)現(xiàn)OAuth2協(xié)議及實(shí)戰(zhàn)

    文章篇幅較長(zhǎng),愿讀者耐心看完。如有不足之處,請(qǐng)指正。 一.OAuth2介紹 1.1 OAuth2是什么 怎么用 OAuth2是目前最流行的授權(quán)協(xié)議,用來(lái)授權(quán)第三方應(yīng)用,獲取用戶數(shù)據(jù)。 舉個(gè)例子:快遞員想要進(jìn)入小區(qū),有3種方式。1是業(yè)主遠(yuǎn)程開(kāi)門,2是業(yè)主告訴門禁密碼,3是使用令牌(Oaut

    2024年02月08日
    瀏覽(21)
  • Spring Security OAuth2 遠(yuǎn)程命令執(zhí)行漏洞

    Spring Security OAuth2 遠(yuǎn)程命令執(zhí)行漏洞

    cd vulhub/spring/CVE-2016-4977/ docker-compose up -d 訪問(wèn) http://192.168.10.171:8080/oauth/authorize?response_type=${233*233}client_id=acmescope=openidredirect_uri=http://test 用admin:admin登陸 出現(xiàn)以下報(bào)錯(cuò),表示漏洞存在(response_type里面的命令執(zhí)行了) poc.py #!/usr/bin/env python message = input(‘Enter message to encode:’) p

    2024年02月09日
    瀏覽(22)
  • 微服務(wù)安全Spring Security Oauth2實(shí)戰(zhàn)

    微服務(wù)安全Spring Security Oauth2實(shí)戰(zhàn)

    Spring Authorization Server 是一個(gè)框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 規(guī)范以及其他相關(guān)規(guī)范的實(shí)現(xiàn)。它建立在 Spring Security 之上,為構(gòu)建 OpenID Connect 1.0 身份提供者和 OAuth2 授權(quán)服務(wù)器產(chǎn)品提供了一個(gè)安全、輕量級(jí)和可定制的基礎(chǔ)。說(shuō)白了,Spring Authorization Server 就是一個(gè)**認(rèn)

    2024年02月03日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包