我是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
谢谢。
我认为你在keycloak.security-constraints[0].authRoles[0]=testuser
上有一个错字,你应该在这里指定角色而不是用户。如果你按照博客文章说明,它应该是:keycloak.security-constraints[0].authRoles[0]=user
在我的情况下,我将use-resource-role-mappings
设置为true
,考虑到它将提供领域和客户端角色,但事实证明,如果此选项设置为true
,则仅考虑客户端角色。
AFAICS,there is no way to use both。
我已经尝试过本周末重播这个非常有趣的DEvoxx Sebastien发言的例子。
我在属性keycloak.security-constraints[0].authRoles[0]=user
中指定的角色“user”有403错误
默认的keycloak配置中不存在“user”角色。您必须先在领域(领域/配置/角色)中创建它并将其分配给您的用户(领域/用户/用户/角色映射)。
关于该教程,我只是遇到登出功能问题。
有时注销不起作用。
1)我点击退出然后点击/ products,然后我没有被重定向到keycloak登录页面
2)如果我点击退出,然后我刷新浏览器页面,然后点击/ products我被重定向到keycloak登录页面。
它接应来自HttpServletRequest的注销实现不足以真正注销用户?
`
@GetMapping(path = "/logout")
public String logout(HttpServletRequest request) throws ServletException{
request.logout();
return "/";
}
`
如果有人对springboot和keycloak之间的行为有解释。谢谢。