ksl*_*ksl 5 cors reactjs spring-boot keycloak
我使用 Keycloak 4.4.0 来保护我的 REST 服务,该服务是使用 Spring Boot 实现的,我使用 React 作为前端。
当前端(在 上运行localhost:3000)进行 API 调用localhost:8080/login并被重定向到 Keycloak 登录页面时,我收到 CORS 错误。
错误是:
localhost/:1 加载http://localhost:8080/login失败:从“ http://localhost:8080/login ”重定向到“ http://localhost:9080/auth/realms/hbs/protocol/openid- connect/auth?response_type=code&client_id=hbs&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin&state=ab5034a9-4baa-4be3-9ec1-feefbe5f9c0b&login=true&scope=openid '已被禁止控制 - 'Allow Access- openid ' 策略已被 CORS 阻止-Origin' 标头存在于请求的资源上。因此,不允许访问Origin ' http://localhost:3000 '。
我在 Keycloak 客户端'*'的Web Origins配置部分添加了一个值。
我已将我的 REST 控制器注释如下:
@RestController
class MyController
{
@CrossOrigin
@GetMapping("/login")
public ResponseEntity<Foo> getFoo(Principal principal)
{
return ResponseEntity.ok(new Foo("blah"));
}
}
Run Code Online (Sandbox Code Playgroud)
我在应用程序属性中启用了 Keycloak 和 CORS:
keycloak.cors = true
keycloak.enabled = true
Run Code Online (Sandbox Code Playgroud)
如果我禁用 Keycloak 和 CORS,问题就会消失。
如上所述这里,我怀疑问题出在Keycloak服务器不与任何回应做Access-Control-Allow-Origin头,尽管Web Origins在Keycloak管理门户中正确配置。但我不完全确定如何确认这一点。
Joa*_*mos -1
假设下面的 json 是您的 Keycloak 配置:
{
"realm" : "cors",
"resource" : "cors-database-service",
"auth-server-url": "http://localhost-auth:8080/auth",
"bearer-only" : true,
"ssl-required": "external",
"enable-cors": true
}
Run Code Online (Sandbox Code Playgroud)
尝试将最后一行添加到配置文件中。让我知道它是否对您有用!
OBS:我面临同样的问题,但我正在使用 Wildfly/JBOSS 适配器并在应用程序服务器内进行此配置。
@编辑:这对我来说效果很好。
尝试将“访问类型”更改为bearer-onlyKeycloak 上的 REST 客户端内部。
另外,当从客户端向 RESTful API 发送 HTTP 请求时,不要忘记添加参数 {"{"Authorization" : "bearer " + $TOKEN}。
| 归档时间: |
|
| 查看次数: |
10399 次 |
| 最近记录: |