【问题标题】:Why is @EnableOAuth2Sso deprecated?为什么不推荐使用@EnableOAuth2Sso?
【发布时间】:2020-06-29 17:29:15
【问题描述】:

为什么在 Spring Security 中不推荐使用 @EnableOAuth2Sso? 这就是 OAuth2 对我有用的唯一原因。

如果我删除@EnableOAuth2Sso,那么这将不起作用

@Configuration
@EnableOAuth2Client
@EnableOAuth2Sso <- Need to have this!
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
        .csrf().disable()
        .authorizeRequests()
        .antMatchers("/Intranet/Bokning").authenticated()
        .antMatchers("/**", "/Intranet**").permitAll()
        .anyRequest().authenticated()
        .and().logout().logoutSuccessUrl("/").permitAll();
    }

}

还有其他解决方案吗?

【问题讨论】:

标签: java spring-security oauth-2.0


【解决方案1】:

这是使用 Facebook OAuth2.0 的最新 Spring Security 解决方案。

安全性:

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(HttpSecurity http) throws Exception {

        http
        .csrf().disable()
        .authorizeRequests()
        .antMatchers("/Intranet/Bokning").authenticated() // Block this 
        .antMatchers("/**", "/Intranet**").permitAll() // Allow this for all
        .anyRequest().authenticated()
        .and().logout().logoutSuccessUrl("/").permitAll()
        .and()
        .oauth2Login();
    }
}

还有appllication.yml

spring:
  security:
    oauth2:
      client:
        registration:
           facebook:
              clientId: myID
              clientSecret: mySecret
              accessTokenUri: https://graph.facebook.com/oauth/access_token
              userAuthorizationUri: https://www.facebook.com/dialog/oauth
              tokenName: oauth_token
              authenticationScheme: query
              clientAuthenticationScheme: form
              resource:
                 userInfoUri: https://graph.facebook.com/me

server:
  port: 8080

还有pom.xml文件:

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

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-oauth2-client</artifactId>
    </dependency>

【讨论】:

    【解决方案2】:

    在 Spring Security 5.2.x 中,这些注释已被弃用,我们需要使用 DSL 方法。

    public class SecurityConf extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.oauth2Client(); //equivalent to @EnableOAuth2Client
        http.oauth2Login();  //equivalent to @EnableOAuth2Sso
    
    }
    

    Spring OAuth2 迁移指南 https://github.com/spring-projects/spring-security/wiki/OAuth-2.0-Migration-Guide

    【讨论】:

      猜你喜欢
      • 2016-02-23
      • 2017-11-04
      • 2011-10-22
      • 2011-04-11
      • 2021-10-12
      • 2012-12-07
      • 2012-05-16
      • 2014-08-11
      • 2016-06-19
      相关资源
      最近更新 更多