【问题标题】:Spring security oauth2 server - intercept unauthorized denied accessSpring security oauth2 server - 拦截未经授权的拒绝访问
【发布时间】:2018-04-27 03:23:45
【问题描述】:
我想拦截来自 spring cloud oauth2 授权服务器的访问被拒绝响应:
<oauth>
<error_description>
Full authentication is required to access this resource
</error_description>
<error>unauthorized</error>
</oauth>
我想拦截异常并做一些自定义重定向或显示自定义页面。
关于如何做到这一点的任何提示?
提前致谢。
【问题讨论】:
标签:
spring
oauth-2.0
cloud
spring-cloud
spring-security-oauth2
【解决方案1】:
最终通过扩展 ResourceServerConfigurerAdapter 并使用以下附加代码覆盖 configure(http) 方法解决了这个问题:
...
http.exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
...
@Bean
public AuthenticationEntryPoint unauthorizedEntryPoint() {
return (request, response, authException) -> {
LOGGER.info("\n!!!!!!!! unauthorized: {} !!!!!!!!!!!!", authException.getMessage());
String uri = request.getContextPath() + "/login";
if(loadBalancerClient!=null && loadBalancerClient.choose("API-GATEWAY") != null) {
uri = loadBalancerClient.choose("API-GATEWAY").getUri().toString();
}
response.sendRedirect(uri);
};
}