Spring Boot - KeyCloak指向403禁止

问题描述 投票:5回答:4

我是Keycloak的新手,我正在使用https://github.com/sebastienblanc/spring-boot-keycloak-tutorial上的官方教程

为了与Springboot应用程序集成,我已经成功设置了KeyCloak服务器,并且Spring引导应用程序也指向我在KeyCloak上创建的Realm上创建的客户端应用程序,之后提供了指向禁止页面的正确凭据。

@Controller
class ProductController {

@GetMapping(path = "/products")
public String getProducts(Model model){
    model.addAttribute("products", Arrays.asList("iPad","iPhone","iPod"));
    return "products";
}

@GetMapping(path = "/logout")
public String logout(HttpServletRequest request) throws ServletException {
    request.logout();
    return "/";
}
}

Application.properties文件

keycloak.auth-server-url=http://localhost:8080/auth
keycloak.realm=springdemo
keycloak.resource=product-app
keycloak.public-client=true

keycloak.security-constraints[0].authRoles[0]=testuser
keycloak.security-
constraints[0].securityCollections[0].patterns[0]=/products/*

server.port=8081

我没有从KeyCloak控制台或spring嵌入式tomcat控制台收到任何错误消息。

Check the tomcat console here - no error enter image description here

谢谢。

java spring-boot keycloak
4个回答
3
投票

我认为你在keycloak.security-constraints[0].authRoles[0]=testuser上有一个错字,你应该在这里指定角色而不是用户。如果你按照博客文章说明,它应该是:keycloak.security-constraints[0].authRoles[0]=user


1
投票

在我的情况下,我将use-resource-role-mappings设置为true,考虑到它将提供领域和客户端角色,但事实证明,如果此选项设置为true,则仅考虑客户端角色。

AFAICS,there is no way to use both


0
投票

我已经尝试过本周末重播这个非常有趣的DEvoxx Sebastien发言的例子。

我在属性keycloak.security-constraints[0].authRoles[0]=user中指定的角色“user”有403错误

默认的keycloak配置中不存在“user”角色。您必须先在领域(领域/配置/角色)中创建它并将其分配给您的用户(领域/用户/用户/角色映射)。


0
投票

关于该教程,我只是遇到登出功能问题。

有时注销不起作用。

1)我点击退出然后点击/ products,然后我没有被重定向到keycloak登录页面

2)如果我点击退出,然后我刷新浏览器页面,然后点击/ products我被重定向到keycloak登录页面。

它接应来自HttpServletRequest的注销实现不足以真正注销用户?

`

@GetMapping(path = "/logout")
public String logout(HttpServletRequest request) throws ServletException{
        request.logout();
        return "/";
}

`

如果有人对springboot和keycloak之间的行为有解释。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.