如何使用CAS对SpringBoot后端授权Angular5应用

时间:2018-10-23 09:22:09

标签: angular spring-boot authentication spring-security cors

我最近一直在使用以下组件对WebApp进行编码:

后端:具有SpringSecurity的SpringBoot API,已针对第三方CAS服务器进行授权。

前端:基本上是查询API以获得信息的Angular5应用。

问题:我实际上有两个问题:

  • 如何在前端和后端之间同步CAS身份验证?
  • 当后端将前端重定向到登录页面时,如何避免CORS问题?

当前,如果我尝试直接在后端访问资源,如果我已注销并且一切正常,它将重定向到CAS登录页面。但是,如果我从Angular一侧访问资源,则会遇到

  

CAS登录重定向遇到跨域读取阻止(CORB)   阻止了跨源响应。

对于第二个问题,我尝试了在互联网上找到的所有内容,但均未获得成功。我已经在控制器中添加了 @CrossOrigin ,如果停用安全性但在重定向到第三方登录时找不到避免方法,则不会出现CORS问题。

如果需要更多信息,我会很乐意提供:)

谢谢!

1 个答案:

答案 0 :(得分:2)

我是一个主要大学的顾问,那里现在有数个Spring Boot / Angular应用程序,我们已经通过将Angular应用程序绑定到后端应用程序的静态资源中来解决了这个问题,因此Angular应用程序由嵌入式Web服务器提供服务。

通过这种方式,后端的CAS过滤器也可以保护对Angular应用的访问。

我们唯一需要添加的是Angular中的Http拦截器,该拦截器捕获到CAS令牌过期后Angular应用程序进行服务调用时可能发生的Http 401错误。拦截器重定向到Spring Boot应用程序中的路由,该路由又重定向到CAS服务器。