当前位置: 首页 > 知识库问答 >
问题:

CORS发行了带有Keycloak Angular和spring boot REST API

姚航
2023-03-14

我已经构建了spring boot REST API(2.3.2.release)、Angular(v10)应用程序,使用keycloak(jboss/keycloak:12.0.3)进行身份验证和授权。

spring boot应用程序使用KeycloakWebSecurityConfigurerAdapter进行配置,Angular前端使用“KeyCloak-Angular”:“^8.1.0”,“KeyCloak-js”:“^12.0.2”,

目前,我可以通过keycloak登录窗口成功地登录到Angular Fronter应用程序中。但是在Angular项目中尝试使用HttpClient对spring boot REST API执行POST或GET请求时出现CORS错误。

令牌已正确绑定到请求。这个令牌是有效的,因为我可以通过Postman使用这个相同的令牌调用这个API。

我尝试过的解决方案:

  • 将keycloak管理上的web源设置为*-不工作
  • 在spring boot应用程序中的application.properties中设置keycloak.cors=false-不工作
  • spring安全配置中设置CORS.DISABLE-也不工作
@Override
protected void configure(HttpSecurity http) throws Exception {
  super.configure(http);

  http.cors().disable();
}

共有1个答案

段干帅
2023-03-14

在我的cors配置中有一个错误,所以基本上你的keycloak设置应该做与spring安全如下,它将解决任何类型的cors与spring boot和keycloak相关的问题。

  1. 转到Keycloak的管理控制台,并将客户端的“web Origins”设置为应用程序web前端应用程序的地址(例如:-http://localhost:42)(或仅*)。
  2. 在应用程序.properties中设置keycloak.cors=true
 类似资料:
  • 我有Vuejs前端和一个Spring Boot Webflux控制器。现在浏览器在调用Spring Boot时会与CORS抱怨。 你知道为什么上面链接中描述的CORS配置不起作用吗?我还尝试在全局配置上启用CORS,并使用WebFilter启用CORS。但似乎什么都不管用。

  • 我有一个小的Spring Boot应用程序,它创建了一个RabbitListener,并处理消息(到目前为止都成功了)。我希望在我定义的管理endpoint中看到服务的默认度量(如http://localhost:8082/demo/metrics/jvm.memory.max),但只要我添加了依赖项 默认的“/metrics”endpoint不再公开。我使用的是2.0.2版本。spring-bo

  • 我正在使用Spring Boot为一个简单的REST控制器提供一个有角度的应用程序。我配置了全局CORS策略: 现在,在使用普通HTTP时,这工作很好,但是,如果我在中配置TLS,如下所示: 下面是控制台记录的错误消息:

  • 试图将axios post请求从Vue应用程序(localhost)发送到我的nodejs API(localhost和heroku)。 如果请求是在没有数据或头的情况下发送的,则接收响应不会有问题,但是当我添加它们时,我会收到以下错误: 我已经尝试了不同的选择,服务器端和客户端,建议类似的问题,但没有成功。 客户端请求: 服务器endpoint: 我尝试了一些答案: 对预飞行请求的响应没有通过访

  • 问题内容: 我现在奋斗了几个小时。我想向另一个域发出简单的Ajax请求,但始终出现http 401错误: 我在服务器端设置了所有相关的CORS标头。这是网络流量: 我知道有很多关于此主题的文章,但似乎我缺少一些简单的东西。有人可以帮我吗? 问题答案: 更新 看起来我不对。标头从不发送请求。 -你需要确保你的服务器不响应到请求。 我不知道您的服务器用什么语言编写,但是您以错误的方式实现了授权-应该从

  • 问题内容: (长话短说,我只是一个愚蠢的假设,我确定一栏是一个日期时间,而且不是- 所以不要指望在这个问题中找到任何有趣的东西,把它留在这里以使dems正确地被他接受回答) 我写了一个简单的查询,像这样: 其中DateMadeActive是日期时间列。这返回了我期望的结果: 现在,我将其插入到新表中,但是将MIN(DateMadeActive)的结果插入另一个表的datetime列中时,出现了此错