国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Spring Boot 參考指南(安全)

XanaHopper / 3542人閱讀

摘要:用于發(fā)布身份驗(yàn)證事件的。導(dǎo)入用于安全,配置身份驗(yàn)證,這在非應(yīng)用程序中也是相關(guān)的。安全出于安全考慮,除和之外的所有默認(rèn)禁用,屬性可用于啟用。有關(guān)保護(hù)的其他信息可以在參考指南中找到。

28. 安全

如果在類(lèi)路徑上有Spring Security,那么web應(yīng)用程序默認(rèn)是安全的,Spring Boot依賴(lài)Spring Security的內(nèi)容協(xié)商策略來(lái)決定是使用httpBasic還是formLogin,要向web應(yīng)用程序添加方法級(jí)安全性,還可以使用所需的設(shè)置添加@EnableGlobalMethodSecurity,其他信息可以在Spring Security參考指南中找到。

默認(rèn)的UserDetailsService只有一個(gè)用戶(hù),用戶(hù)名是user,密碼是隨機(jī)的,在應(yīng)用程序啟動(dòng)時(shí)在INFO級(jí)別打印,如下例所示:

Using generated security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35
如果你對(duì)日志配置進(jìn)行了微調(diào),請(qǐng)確保org.springframework.boot.autoconfigure.security類(lèi)別設(shè)置為記錄INFO級(jí)別的消息,否則,不會(huì)打印默認(rèn)密碼。

你可以通過(guò)提供spring.security.user.namespring.security.user.password來(lái)更改用戶(hù)名和密碼。

你在web應(yīng)用程序中默認(rèn)獲得的基本特性是:

使用內(nèi)存存儲(chǔ)的UserDetailsService(或WebFlux應(yīng)用程序下的ReactiveUserDetailsService) bean和使用生成密碼的單個(gè)用戶(hù)(參見(jiàn)SecurityProperties.User)的屬性。

整個(gè)應(yīng)用程序基于表單的登錄或HTTP Basic Security(取決于內(nèi)容類(lèi)型)(如果執(zhí)行器在類(lèi)路徑上,則包括執(zhí)行器端點(diǎn))。

用于發(fā)布身份驗(yàn)證事件的DefaultAuthenticationEventPublisher

你可以通過(guò)添加bean來(lái)提供不同的AuthenticationEventPublisher

28.1 MVC Security

默認(rèn)的security配置在SecurityAutoConfigurationUserDetailsServiceAutoConfiguration中實(shí)現(xiàn),SecurityAutoConfiguration導(dǎo)入SpringBootWebSecurityConfiguration用于web安全,UserDetailsServiceAutoConfiguration配置身份驗(yàn)證,這在非web應(yīng)用程序中也是相關(guān)的,要完全關(guān)閉默認(rèn)的web應(yīng)用程序安全配置,可以添加WebSecurityConfigurerAdapter類(lèi)型的bean(這樣做不會(huì)禁用UserDetailsService配置或執(zhí)行器的安全)。

要關(guān)閉UserDetailsService配置,可以添加UserDetailsServiceAuthenticationProviderAuthenticationManager類(lèi)型的bean,在Spring Boot示例中有幾個(gè)安全的應(yīng)用程序可以讓你從常見(jiàn)的用例開(kāi)始。

可以通過(guò)添加自定義的WebSecurityConfigurerAdapter來(lái)覆蓋訪問(wèn)規(guī)則,Spring Boot提供了方便的方法,可用于覆蓋執(zhí)行器端點(diǎn)和靜態(tài)資源的訪問(wèn)規(guī)則,可以使用EndpointRequest創(chuàng)建一個(gè)基于management.endpoints.web.base-path屬性的RequestMatcherPathRequest可用于為常用位置的資源創(chuàng)建RequestMatcher

28.2 WebFlux Security

與Spring MVC應(yīng)用程序類(lèi)似,你可以通過(guò)添加Spring-boot-starter-security依賴(lài)項(xiàng)來(lái)保護(hù)WebFlux應(yīng)用程序,默認(rèn)的security配置在ReactiveSecurityAutoConfigurationUserDetailsServiceAutoConfiguration中實(shí)現(xiàn)。ReactiveSecurityAutoConfiguration導(dǎo)入WebFluxSecurityConfiguration用于web安全,UserDetailsServiceAutoConfiguration配置身份驗(yàn)證,這在非web應(yīng)用程序中也是相關(guān)的。要完全關(guān)閉默認(rèn)的web應(yīng)用程序安全配置,可以添加WebFilterChainProxy類(lèi)型的bean(這樣做不會(huì)禁用UserDetailsService配置或執(zhí)行器的安全)。

為了關(guān)閉UserDetailsService配置,你可以添加一個(gè)類(lèi)型為ReactiveUserDetailsServiceReactiveAuthenticationManager的bean。

可以通過(guò)添加自定義SecurityWebFilterChain來(lái)配置訪問(wèn)規(guī)則,Spring Boot提供了方便的方法,可用于覆蓋執(zhí)行器端點(diǎn)和靜態(tài)資源的訪問(wèn)規(guī)則,可以使用EndpointRequest創(chuàng)建一個(gè)基于management.endpoints.web.base-path屬性的ServerWebExchangeMatcher

PathRequest可用于為常用位置的資源創(chuàng)建ServerWebExchangeMatcher

例如,你可以通過(guò)添加以下內(nèi)容來(lái)定制你的security配置:

@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
    return http
        .authorizeExchange()
            .matchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
            .pathMatchers("/foo", "/bar")
                .authenticated().and()
            .formLogin().and()
        .build();
}
28.3 OAuth2

OAuth2是Spring支持的廣泛使用的授權(quán)框架。

28.3.1 客戶(hù)端

如果你的類(lèi)路徑中有spring-security-oauth2-client,那么可以利用一些自動(dòng)配置來(lái)輕松地設(shè)置OAuth2客戶(hù)端,這個(gè)配置使用OAuth2ClientProperties下的屬性。

你可以在spring.security.oauth2.client前綴下注冊(cè)多個(gè)OAuth2客戶(hù)端和提供者,如下例所示:

spring.security.oauth2.client.registration.my-client-1.client-id=abcd
spring.security.oauth2.client.registration.my-client-1.client-secret=password
spring.security.oauth2.client.registration.my-client-1.client-name=Client for user scope
spring.security.oauth2.client.registration.my-client-1.provider=my-oauth-provider
spring.security.oauth2.client.registration.my-client-1.scope=user
spring.security.oauth2.client.registration.my-client-1.redirect-uri-template=http://my-redirect-uri.com
spring.security.oauth2.client.registration.my-client-1.client-authentication-method=basic
spring.security.oauth2.client.registration.my-client-1.authorization-grant-type=authorization_code

spring.security.oauth2.client.registration.my-client-2.client-id=abcd
spring.security.oauth2.client.registration.my-client-2.client-secret=password
spring.security.oauth2.client.registration.my-client-2.client-name=Client for email scope
spring.security.oauth2.client.registration.my-client-2.provider=my-oauth-provider
spring.security.oauth2.client.registration.my-client-2.scope=email
spring.security.oauth2.client.registration.my-client-2.redirect-uri-template=http://my-redirect-uri.com
spring.security.oauth2.client.registration.my-client-2.client-authentication-method=basic
spring.security.oauth2.client.registration.my-client-2.authorization-grant-type=authorization_code

spring.security.oauth2.client.provider.my-oauth-provider.authorization-uri=http://my-auth-server/oauth/authorize
spring.security.oauth2.client.provider.my-oauth-provider.token-uri=http://my-auth-server/oauth/token
spring.security.oauth2.client.provider.my-oauth-provider.user-info-uri=http://my-auth-server/userinfo
spring.security.oauth2.client.provider.my-oauth-provider.jwk-set-uri=http://my-auth-server/token_keys
spring.security.oauth2.client.provider.my-oauth-provider.user-name-attribute=name

默認(rèn)情況下,Spring Security的OAuth2LoginAuthenticationFilter只處理匹配/login/oauth2/code/*的url,如果你想定制redirect-uri-template來(lái)使用不同的模式,你需要提供配置來(lái)處理定制模式,例如,你可以添加類(lèi)似于以下內(nèi)容的WebSecurityConfigurerAdapter

public class OAuth2LoginSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .oauth2Login()
                .redirectionEndpoint()
                    .baseUri("/custom-callback");
    }
}

對(duì)于普通的OAuth2和OpenID提供者,包括谷歌、Github、Facebook和Okta,我們提供了一組提供者默認(rèn)值(google、github、facebookOkta)。

如果你不需要定制這些提供者,你可以將提供者屬性設(shè)置為你需要推斷默認(rèn)值的提供者屬性,另外,如果客戶(hù)端的ID與默認(rèn)支持的提供程序匹配,Spring Boot也會(huì)推斷出這一點(diǎn)。

換句話說(shuō),下面示例中的兩個(gè)配置使用谷歌提供程序:

spring.security.oauth2.client.registration.my-client.client-id=abcd
spring.security.oauth2.client.registration.my-client.client-secret=password
spring.security.oauth2.client.registration.my-client.provider=google

spring.security.oauth2.client.registration.google.client-id=abcd
spring.security.oauth2.client.registration.google.client-secret=password
28.3.2 服務(wù)器

目前,Spring Security不支持實(shí)現(xiàn)OAuth 2.0授權(quán)服務(wù)器或資源服務(wù)器,但是,這個(gè)功能可以從Spring Security OAuth項(xiàng)目中獲得,該項(xiàng)目最終將被Spring Security完全取代,在此之前,你可以使用spring-security-oauth2-autoconfigure模塊輕松設(shè)置OAuth 2.0服務(wù)器,有關(guān)說(shuō)明,請(qǐng)參閱其文檔。

28.4 Actuator安全

出于安全考慮,除/health/info之外的所有Actuator默認(rèn)禁用,management.endpoints.web.exposure.include屬性可用于啟用actuator。

如果在類(lèi)路徑上有Spring Security,并且沒(méi)有其他WebSecurityConfigurerAdapter存在,actuator是通過(guò)Spring Boot自動(dòng)配置來(lái)保護(hù)的,如果你定義了一個(gè)自定義的WebSecurityConfigurerAdapter,Spring Boot自動(dòng)配置將退出,你將完全控制actuator訪問(wèn)規(guī)則。

在設(shè)置management.endpoints.web.exposure.include之前,確保暴露的actuator不包含敏感信息和/或通過(guò)將它們置于防火墻后或通過(guò)類(lèi)似Spring Security的方式進(jìn)行安全保護(hù)。
28.4.1 跨站請(qǐng)求偽造保護(hù)

由于Spring Boot依賴(lài)于Spring Security的默認(rèn)值,所以CSRF保護(hù)默認(rèn)打開(kāi),這意味著,當(dāng)使用默認(rèn)安全配置時(shí),需要POST(關(guān)閉和日志記錄器端點(diǎn))、PUTDELETE的actuator端點(diǎn)將收到403禁止錯(cuò)誤。

我們建議,只有在創(chuàng)建非瀏覽器客戶(hù)端使用的服務(wù)時(shí),才完全禁用CSRF保護(hù)。

有關(guān)CSRF保護(hù)的其他信息可以在Spring Security參考指南中找到。

上一篇:開(kāi)發(fā)Web應(yīng)用程序

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77372.html

相關(guān)文章

  • Spring Boot 參考指南(目錄)

    摘要:參考指南使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的生產(chǎn)級(jí)的基于的應(yīng)用程序,我們對(duì)平臺(tái)和第三方庫(kù)有自己的看法,這樣你就可以以最低限度工作開(kāi)始了,大多數(shù)應(yīng)用程序都需要很少的配置。文檔本節(jié)簡(jiǎn)要概述了參考文檔,它充當(dāng)文檔其余部分的映射。 Spring Boot 參考指南 Spring Boot使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的、生產(chǎn)級(jí)的基于Spring的應(yīng)用程序,我們對(duì)Spring平臺(tái)和第三方庫(kù)有自己的看...

    awesome23 評(píng)論0 收藏0
  • Spring Boot 參考指南Spring Boot介紹)

    摘要:我們的主要目標(biāo)是為所有開(kāi)發(fā)提供一個(gè)非常快的廣泛可訪問(wèn)的入門(mén)體驗(yàn)。要跳出固有的思維模式,但是當(dāng)需求開(kāi)始偏離默認(rèn)設(shè)置時(shí),要迅速避開(kāi)。提供大型項(xiàng)目如嵌入式服務(wù)器安全性指標(biāo)健康檢查和外部化配置所共有的一系列非功能特性。系統(tǒng)要求需要或和或以上。 8. Spring Boot介紹 Spring Boot使你可以輕松地創(chuàng)建可運(yùn)行的獨(dú)立的、生產(chǎn)級(jí)的基于Spring的應(yīng)用程序,我們對(duì)Spring平臺(tái)和第...

    GraphQuery 評(píng)論0 收藏0
  • [譯]Spring入門(mén) - Web應(yīng)用程序安全

    摘要:一旦最基本的應(yīng)用創(chuàng)建好了,你可以給他加上安全防護(hù)。一旦成功登出了,我們的應(yīng)用程序重定向到到并顯示相應(yīng)的登陸成功的消息。這標(biāo)記該應(yīng)用程序是一個(gè)應(yīng)用程序,并激活一些關(guān)鍵行為,比如創(chuàng)建一個(gè)。一旦應(yīng)用程序啟動(dòng),用瀏覽器訪問(wèn)。 原網(wǎng)頁(yè) https://spring.io/guides/gs/securing-web/ 本指南將引導(dǎo)您完成創(chuàng)建一個(gè)資源由Spring Security的保護(hù)的一個(gè)簡(jiǎn)單...

    AlexTuan 評(píng)論0 收藏0
  • Spring Boot 參考指南(安裝CLI)

    摘要:安裝可以使用手動(dòng)安裝命令行接口或如果你是用戶(hù),可以使用或。有關(guān)全面的安裝說(shuō)明,請(qǐng)參閱開(kāi)始部分中的第節(jié),安裝。推斷抓取依賴(lài)項(xiàng)標(biāo)準(zhǔn)包含一個(gè)注解,它允許你聲明對(duì)第三方庫(kù)的依賴(lài)關(guān)系,這個(gè)有用的技術(shù)讓可以像或那樣下載,但不需要你使用構(gòu)建工具。 第VII章. Spring Boot CLI 如果你想快速開(kāi)發(fā)Spring應(yīng)用程序,可以使用Spring Boot CLI命令行工具,它允許你運(yùn)行Groo...

    Moxmi 評(píng)論0 收藏0
  • Spring Boot 參考指南(使用JTA分布式事務(wù))

    摘要:使用事務(wù)管理器是支持的一個(gè)流行的開(kāi)源事務(wù)管理器實(shí)現(xiàn),你可以使用啟動(dòng)器向項(xiàng)目添加適當(dāng)?shù)囊蕾?lài)項(xiàng),與和一樣,將自動(dòng)配置并對(duì)進(jìn)行后處理,以確保啟動(dòng)和關(guān)閉順序是正確的。 37. 用JTA分布式事務(wù) 通過(guò)使用Atomikos或Bitronix嵌入式事務(wù)管理器,Spring Boot支持跨多個(gè)XA資源的分布式JTA事務(wù),在部署到合適的Java EE應(yīng)用服務(wù)器時(shí)也支持JTA事務(wù)。 當(dāng)檢測(cè)到JTA環(huán)境時(shí)...

    silenceboy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<