@EnableZuulProxy+ @EnableOAuth2Sso + AuthenticationFailureHandler
Posted
技术标签:
【中文标题】@EnableZuulProxy+ @EnableOAuth2Sso + AuthenticationFailureHandler【英文标题】: 【发布时间】:2017-10-19 14:21:22 【问题描述】:使用@EnableZuulProxy + @EnableOAuth2Sso 注解时如何拦截身份验证失败?
我有一个授权服务器,它根据 Microsoft Active Directory 服务器对用户进行身份验证。据我所知,在 Spring Cloud 中,流程是这样的:
-
用户尝试通过 Zuul 代理服务器访问 Angular 客户端
Zuul 服务器根据授权服务器检查授权
授权服务器反过来根据 Microsoft Active Directory 服务器验证用户凭据,并在必要时向用户显示登录页面
用户输入用户名和密码
最终,用户密码已过期,Microsoft AD 以错误消息中的“数据 733”代码回复授权服务器拒绝身份验证
授权服务器将身份验证错误发送到 Zuul 服务器,然后 Zuul 服务器使用查询参数 (/login?error) 再次请求登录页面
我想要做的是将第 6 步中的查询参数更改为类似 /login?error_expired 的内容,这样我就可以向用户显示一条消息,告诉他必须更新他的密码在继续之前。
提前感谢您的帮助。
【问题讨论】:
答案是写一个自定义过滤器。 @spencergibb,所以我必须做类似 httpSecurity.addFilterAfter(new CustomFilter(), BasicAuthenticationFilter.class) 的事情?如果是这样,这是我应该用来放置过滤器的确切阶段。我在 BasicAuthenticationFilter 之后尝试过,但没有成功。 自定义zuul过滤器。 ***.com/questions/31055736/…github.com/spring-cloud-samples/sample-zuul-filters 【参考方案1】:最后我发现我的一些假设是错误的。我只需要使用常规的 Spring Security 技术拦截授权服务器本身中失败的身份验证尝试。
【讨论】:
以上是关于@EnableZuulProxy+ @EnableOAuth2Sso + AuthenticationFailureHandler的主要内容,如果未能解决你的问题,请参考以下文章
@EnableEurekaServer、@EnableConfigServer、@EnableAdminServer 和@EnableZuulProxy 走进一家酒吧
使用带有spring boot和eureka的@EnableZuulProxy闪烁Zuul TimeoutExceptions