• <strike id="800qq"></strike>
    <ul id="800qq"></ul>
    
    
    <ul id="800qq"><tbody id="800qq"></tbody></ul>
  • 您的位置:要聞 > 正文

    Spring Boot的安全配置(二)

    來(lái)源: 時(shí)間:2023-04-07 08:24:28


    (資料圖片僅供參考)

    配置OAuth 2.0身份驗(yàn)證

    OAuth 2.0是一種授權(quán)協(xié)議,允許用戶(hù)授權(quán)第三方應(yīng)用程序訪問(wèn)他們的資源。在Spring Boot中,可以使用spring-security-oauth2-autoconfigure庫(kù)來(lái)實(shí)現(xiàn)OAuth 2.0身份驗(yàn)證。該庫(kù)提供了一些可用的OAuth 2.0身份驗(yàn)證客戶(hù)端,包括Facebook、GitHub、Google和Twitter等。

    以下是使用Java配置實(shí)現(xiàn)GitHub OAuth2.0身份驗(yàn)證的示例:

    @Configuration@EnableOAuth2Ssopublic class SecurityConfig extends WebSecurityConfigurerAdapter {    @Override    protected void configure(HttpSecurity http) throws Exception {        http.antMatcher("/**")            .authorizeRequests()            .antMatchers("/", "/login**")            .permitAll()            .anyRequest()            .authenticated()            .and()            .logout()            .logoutSuccessUrl("/")            .permitAll()            .and()            .csrf().disable()            .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);    }    @Bean    public FilterRegistrationBean oauth2ClientFilterRegistration(OAuth2ClientContextFilter filter) {        FilterRegistrationBean registration = new FilterRegistrationBean();        registration.setFilter(filter);        registration.setOrder(-100);        return registration;    }    @Bean    public Filter ssoFilter() {        OAuth2ClientAuthenticationProcessingFilter githubFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/github");        OAuth2RestTemplate githubTemplate = new OAuth2RestTemplate(github(), oauth2ClientContext);        githubFilter.setRestTemplate(githubTemplate);        UserInfoTokenServices tokenServices = new UserInfoTokenServices(githubResource().getUserInfoUri(), github().getClientId());        tokenServices.setRestTemplate(githubTemplate);        githubFilter.setTokenServices(tokenServices);        return githubFilter;    }    @Bean    public OAuth2ProtectedResourceDetails github() {        ClientCredentialsResourceDetails details = new ClientCredentialsResourceDetails();        details.setClientId("");        details.setClientSecret("");        details.setAccessTokenUri("");        details.setScope(Arrays.asList("", ""));        return details;    }    @Bean    public ResourceServerProperties githubResource() {        ResourceServerProperties resource = new ResourceServerProperties();        resource.setUserInfoUri("");        return resource;    }    @Autowired    private OAuth2ClientContext oauth2ClientContext;}

    在上面的示例中,SecurityConfig類(lèi)使用@EnableOAuth2Sso注解啟用OAuth 2.0單點(diǎn)登錄。configure()方法使用HttpSecurity對(duì)象來(lái)配置HTTP請(qǐng)求的安全性。.antMatcher("/**")表示攔截所有請(qǐng)求。.authorizeRequests()表示進(jìn)行授權(quán)請(qǐng)求。.antMatchers("/", "/login**").permitAll()表示允許訪問(wèn)主頁(yè)和登錄頁(yè)面,而不需要進(jìn)行身份驗(yàn)證。.anyRequest().authenticated()表示所有其他請(qǐng)求都需要進(jìn)行身份驗(yàn)證。.logout()方法指定了注銷(xiāo)的URL和成功注銷(xiāo)后的跳轉(zhuǎn)頁(yè)面。.csrf().disable()表示禁用跨站請(qǐng)求偽造保護(hù)。.addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class)表示在BasicAuthenticationFilter之前添加OAuth2ClientAuthenticationProcessingFilter過(guò)濾器。

    oauth2ClientFilterRegistration()方法使用FilterRegistrationBean注冊(cè)OAuth2ClientContextFilter過(guò)濾器。

    ssoFilter()方法創(chuàng)建OAuth2ClientAuthenticationProcessingFilter過(guò)濾器,它將處理"/login/github"路徑的請(qǐng)求。OAuth2RestTemplate對(duì)象提供了GitHub OAuth 2.0客戶(hù)端的訪問(wèn)令牌。UserInfoTokenServices對(duì)象使用OAuth2RestTemplate對(duì)象來(lái)訪問(wèn)GitHub資源服務(wù)器,并驗(yàn)證訪問(wèn)令牌。github()方法創(chuàng)建ClientCredentialsResourceDetails對(duì)象,它包含GitHub OAuth 2.0客戶(hù)端的詳細(xì)信息,例如客戶(hù)端ID和客戶(hù)端秘鑰。ResourceServerProperties對(duì)象指定了GitHub資源服務(wù)器的用戶(hù)信息URI。

    3.0授權(quán)的示例:

    @Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {    @Override    protected void configure(HttpSecurity http) throws Exception {        http.authorizeRequests()            .antMatchers("/admin/**").hasRole("ADMIN")            .antMatchers("/user/**").hasAnyRole("ADMIN", "USER")            .antMatchers("/**").permitAll()            .and()            .formLogin();    }    @Autowired    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {        auth.inMemoryAuthentication()            .withUser("user")            .password("{noop}password")            .roles("USER")            .and()            .withUser("admin")            .password("{noop}password")            .roles("ADMIN");    }}

    在上面的示例中,SecurityConfig類(lèi)使用@EnableWebSecurity注解啟用Spring Security。configure()方法使用HttpSecurity對(duì)象來(lái)配置HTTP請(qǐng)求的安全性。.authorizeRequests()表示進(jìn)行授權(quán)請(qǐng)求。.antMatchers("/admin/**").hasRole("ADMIN")表示要求管理員角色才能訪問(wèn)/admin路徑。.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")表示要求管理員或用戶(hù)角色才能訪問(wèn)/user路徑。.antMatchers("/**").permitAll()表示允許訪問(wèn)所有其他路徑。.formLogin()表示啟用表單登錄。

    configureGlobal()方法使用AuthenticationManagerBuilder對(duì)象來(lái)配置身份驗(yàn)證。inMemoryAuthentication()方法指定了在內(nèi)存中存儲(chǔ)用戶(hù)憑據(jù)。.withUser("user").password("{noop}password").roles("USER")指定了用戶(hù)名、密碼和角色,其中{noop}前綴表示密碼以明文形式存儲(chǔ)在內(nèi)存中。.withUser("admin").password("{noop}password").roles("ADMIN")指定了管理員用戶(hù)的用戶(hù)名、密碼和角色。

    以上是Spring Boot中基于OAuth 2.0和基于授權(quán)的安全配置示例。在實(shí)際開(kāi)發(fā)中,您可以根據(jù)需要進(jìn)行更改和擴(kuò)展。

    關(guān)鍵詞:

    精彩推送

    公司

    吉卜力工作室如今已加入到主題公園的浪潮,并于11月1日正式對(duì)公眾開(kāi)放全球首個(gè)項(xiàng)目,將《龍貓》等經(jīng)典作品的場(chǎng)景復(fù)原至現(xiàn)實(shí)世界。對(duì)于吉卜

    詳細(xì)>>

    隨著在線旅游企業(yè)數(shù)量的不斷增多,售賣(mài)不合理低價(jià)旅游產(chǎn)品、違規(guī)利用用戶(hù)個(gè)人信息等問(wèn)題也時(shí)有發(fā)生。11月1日,文旅部發(fā)布《文化和旅游部關(guān)

    詳細(xì)>>

    兩個(gè)小時(shí),這是越南全國(guó)首票榴蓮從裝車(chē)到運(yùn)送至我國(guó)廣西崇左友誼關(guān)口岸的時(shí)間。得益于一體化供應(yīng)鏈,2021年,中國(guó)與越南進(jìn)出口貿(mào)易額達(dá)到23

    詳細(xì)>>

    11月1日,北京商報(bào)記者梳理發(fā)現(xiàn),截至9月末,10家A股上市農(nóng)商行資產(chǎn)規(guī)模均有所擴(kuò)大,重慶農(nóng)商行、上海農(nóng)商行仍以萬(wàn)億元總資產(chǎn)位居前列。營(yíng)

    詳細(xì)>>

    西貝餐飲集團(tuán)(以下簡(jiǎn)稱(chēng)西貝)在兒童餐的道路上越走越深。11月1日,北京商報(bào)記者從西貝獲悉,其將推出西貝兒童餐零售產(chǎn)品。目前,部分西貝門(mén)

    詳細(xì)>>

    新一期麻辣粉和逆回購(gòu)操作如期公布。9月15日,央行發(fā)布消息稱(chēng),為維護(hù)銀行體系流動(dòng)性合理充裕,開(kāi)展4000億元中期借貸便利(MLF)操作和20億元

    詳細(xì)>>
    亚洲卡一卡二卡乱码新区| 亚洲国产精品久久久久久| 亚洲精品无码久久毛片波多野吉衣| 亚洲人成色7777在线观看| 国产91精品一区二区麻豆亚洲| 国产精品亚洲一区二区三区在线观看 | 亚洲第一se情网站| 亚洲精品无码久久久久秋霞| 亚洲欧美日韩综合久久久| 亚洲AV成人一区二区三区在线看 | 亚洲无码在线播放| 亚洲综合无码AV一区二区| 亚洲色自偷自拍另类小说| 亚洲精品tv久久久久久久久| 久久亚洲国产欧洲精品一| 亚洲AV永久无码精品水牛影视| 亚洲国产精品福利片在线观看 | 亚洲精品无码专区在线| 亚洲av日韩综合一区二区三区 | 亚洲A丁香五香天堂网| 亚洲人成国产精品无码| 国产性爱在线观看亚洲黄色一级片| 国产亚洲精品精品国产亚洲综合| 亚洲人精品午夜射精日韩| 亚洲va无码专区国产乱码| 亚洲天堂一区二区| 亚洲国产美女视频| 亚洲 暴爽 AV人人爽日日碰| 亚洲av无码一区二区三区四区| 无码不卡亚洲成?人片| 亚洲性日韩精品一区二区三区| 亚洲中文字幕无码一区二区三区| 久久亚洲国产午夜精品理论片| 亚洲AV第一页国产精品| 亚洲色成人网一二三区| 亚洲国产日韩综合久久精品| 久久精品熟女亚洲av麻豆| 亚洲中文字幕视频国产| 亚洲AV乱码久久精品蜜桃| 亚洲国产电影在线观看| 亚洲精品美女久久7777777|