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

与登录重定向相关的KeyCloak CORS问题

穆文斌
2023-03-14

这里和这里的类似问题并没有帮助我解决这个问题。

我使用的是KeyClope 4.4。0来保护我的REST服务,该服务是使用Spring Boot实现的,我使用React作为前端。

当前端(在localhost:3000上运行)调用localhost:8080/login并被重定向到KeyCloak登录页面时,我得到一个CORS错误。

错误是:

localhost/:1未能加载http://localhost:8080/login:重定向自'http://localhost:8080/login“到”http://localhost:9080/auth/realms/hbs/protocol/openid-连接/验证?响应类型=代码

我已经添加了一个单一的值'*'到KeyCloak客户端中的网络起源配置部分。

我已将我的REST控制器注释如下:

@RestController
class MyController
{
    @CrossOrigin
    @GetMapping("/login")
    html" target="_blank">public ResponseEntity<Foo> getFoo(Principal principal)
    {
        return ResponseEntity.ok(new Foo("blah"));
    }
}

我已在应用程序属性中启用了KeyClope和CORS:

keycloak.cors = true
keycloak.enabled = true

如果我禁用键斗篷和CORS,问题就会消失。

如本文所述,我怀疑问题与KeyClope服务器没有响应任何Access Control Allow Origin头有关,尽管在KeyClope管理门户中正确配置了Web Origins。但我不完全确定如何证实这一点。

共有2个答案

霍弘厚
2023-03-14

对于那些遇到这种错误的Spring。只需将这个类添加到您的项目中,以允许cors:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    String[] origins = new String[] { "http://localhost:8081"};
    
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        System.out.println("TEST TEST");
        registry.addMapping("/**")
                .allowedOrigins("*");
//              .allowedOrigins(origins);
    }
}

星号允许所有来源,这对于生产系统可能不安全。字符串数组可用于指定多个原点。

祁渊
2023-03-14

假设以下json是您的KeyClope配置:

{
  "realm" : "cors",
  "resource" : "cors-database-service",
  "auth-server-url": "http://localhost-auth:8080/auth",
  "bearer-only" : true,
  "ssl-required": "external",
  "enable-cors": true
}

尝试将最后一行添加到配置文件中。让我知道,如果它为您工作!

OBS:我面临着同样的问题,但是我使用Wildfly/JBOSS适配器,并在应用程序服务器中进行此配置。

@编辑:这对我来说很好。

尝试将KeyCloak上的REST客户端中的访问类型更改为仅承载。

另外,当从客户端向RESTful API发送HTTP请求时,不要忘记添加参数{“{”Authorization:“bearer”$TOKEN}。

 类似资料:
  • 我在Laravel5.2中使用了php artisan函数。 我想重定向的客人登录页面,若客人点击链接,只有用户并没有客人。 我想在登录后将用户重定向到后面的页面。 我怎么能这么做?请详细展示一些文件名示例。 ///////编辑 路线 控制器 Kernel.php

  • 我正在将DNN应用程序从07.00.02升级到07.03.04并在安装后将所有门户重定向到登录页面。所有门户都配置有一个登陆页面,该页面被配置为允许“所有用户”角色视图访问。还有人在升级后遇到过这个问题吗? 2015-02-05 05:45:01 127.0.0.1 GET/-80-127.0.0.1 Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 在我的keycloak客户端设置中,我向Web Origins配置部分添加了一个值'*'。 我还使用node cors库在我的node express应用程序上启用了cors,请遵循以下express指南 我使用keycloak的3.2.1版本,以防有任何不同(我看到一个新版本是作为RC发布的) 谢谢

  • Reducer.js 我想在成功登录后重定向/主页。我如何重定向?

  • 问题内容: 我想设置我的网站,以便如果用户点击该页面并且他们已经登录,它将把他们重定向到主页。如果未登录,它将正常显示。由于登录代码内置在Django中,我该怎么做? 问题答案: 我假设你当前正在使用内置的登录视图, 或你网址中的类似内容。 你可以编写包含默认视图的登录视图。它将检查用户是否已经登录,如果已经登录则重定向,否则使用默认视图。 就像是: 当然可以相应地更改你的网址: