gpt4 book ai didi

java - 为什么我的 OAuth2 无法与 Spring Boot 一起使用?

转载 作者:行者123 更新时间:2023-12-01 17:55:38 24 4
gpt4 key购买 nike

我正在尝试使用 OAuth2 for Spring Boot 设置 Facebook 登录。

首先我有我的 Spring 安全配置。我希望 www.localhost:8080/Intranet/** 中的每个页面对于未经 Facebook 授权的人都被阻止。

@Configuration
@EnableOAuth2Client
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

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

}

我在这里创建我的application.yml:

  spring:
application:
name: spektrakonhemsida
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 configuration
server:
port: 8080
error:
whitelabel:
enabled: false

然后我有 Spring Security 和 OAuth2 的依赖项:

        <dependency>


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

<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>

<!-- Prevent /error to crash -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

这就是正在发生的事情:

  1. 当我访问 www.localhost:8080/Intranet 时 <- 完美运行!
  2. 当我访问 www.localhost:8080/Intranet/Bokning <- 我将导航到/error,其中我的文本显示“您在此没有权限!请登录”。

但我希望用户在进入/Intranet/** 时自动导航到 Facebook 的登录页面

为什么这没有发生?

最佳答案

现在找到解决方案了。需要完成此操作才能使其与 Facebook 兼容。

安全性:

@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();
}
}

和 application.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>

关于java - 为什么我的 OAuth2 无法与 Spring Boot 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60722670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com