【发布时间】:2017-11-09 15:56:20
【问题描述】:
我在尝试从浏览器的 oauth/token 获取令牌时遇到问题。我有一个带有 Spring Security 和 Spring Security oauth 的 Spring Boot 应用程序,我正在尝试从不同端口中的 javascript SPA 进行身份验证。
当在后端禁用 CORS 时,我可以使用 Postman 或终端从 oauth 端点获取令牌,但由于 CORS 预检失败,我无法从 javascript 获取它们。
如果我启用 CORS,预检会成功,但现在我收到 InsufficientAuthenticationException,说 “没有客户端身份验证。尝试添加适当的身份验证过滤器”。据我所知,这是因为 Spring Security 无法从请求中获取主体。
有人对如何处理这个问题有建议吗?
【问题讨论】:
-
当您从其他域发送请求时,CORS 会阻止
OPTIONS的飞行前请求。所以在你的控制器代码中添加@CrossOrigin和@RestController并检查一次。 -
@Hema 是的,这是我的问题,当我添加 CORS(在每个端点上)时,我得到了
InsufficientAuthenticationException。我应该添加一个@RestController包含 spring 自动创建的 oauth 端点,还是会覆盖 spring 安全性? -
不,那不会超车。只需添加@RestController 并尝试一次。这对我来说很好。所以建议你
标签: javascript java spring spring-security oauth-2.0