我对Spring和OAuth都很满意,这使我很难解决这个令人困扰的问题!
根据我的收集,我需要做的是使用oauth和开放ID创建集中式授权服务器。
我们有一个中央用户数据库,我们希望所有应用程序都调用授权服务器,登录,自动批准(因为唯一的流量应该来自我们的服务器),并根据它们的URI重定向它们通过。
理想情况下,我们会给他们授权令牌和ID令牌(开放ID),以便他们掌握有关登录用户的信息。
因此,我正在设置一个Spring Boot应用程序,该应用程序仅充当授权服务器。到目前为止,我看到了登录页面-但是每次登录尝试都以以下错误结束:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
到目前为止,这是我要用于该服务器的内容:
SpringBootServletInitializer(应用程序初始化程序)-com.company
@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
AuthorizationServerConfigurerAdapter(身份验证服务器)-com.company.config
@Configuration
@EnableAuthorizationServer
public class AuthorizationServer extends AuthorizationServerConfigurerAdapter {
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("my_client")
.secret("my_secret")
.autoApprove(true)
.authorizedGrantTypes("authorization_code", "refresh_token", "password")
.scopes("openid")
.accessTokenValiditySeconds(600);
}
}
WebSecurityConfigurerAdapter(安全性)-com.company.config
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
@Autowired
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password")
.roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.formLogin()
.and()
.httpBasic().disable()
.anonymous().disable()
.authorizeRequests().anyRequest().authenticated();
// disabled basic auth and configured to use dafault Spring Security form login.
}
}
那么问题:
答案 0 :(得分:1)
错误是由于从春天开始就可以映射到错误页面,这是因为存在异常。
您可以指定自己的登录页面,如下所示:
.formLogin()
.loginPage("/login.html") //your custom login page
.defaultSuccessUrl("/homepage.html", true) //welcome page after login success
.failureUrl("/login.html?error=true") // when AccessDenied happens