在Keycloak中保护应用程序的“演示”配置如下:
keycloak.securityConstraints[0].securityCollections[0].name = edit
keycloak.securityConstraints[0].securityCollections[0].authRoles[0] = edit
keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /api/edit/*
keycloak.securityConstraints[0].securityCollections[1].name = view
keycloak.securityConstraints[0].securityCollections[1].authRoles[0] = view
keycloak.securityConstraints[0].securityCollections[1].patterns[0] = /api/view/*
但我不想使用路径保护,而是使用方法(通常POST,PUT和DELETE可用于“编辑”,GET用于“视图”)。它甚至可能吗?我尝试使用纯Spring数据解决方案,但是Keycloak似乎没有那么好用。
答案 0 :(得分:2)
您可以在安全约束中指定方法,例如: keycloak.securityConstraints [0] .securityCollections [0] .methods [0] = GET
答案 1 :(得分:0)
您可以在Spring Boot应用程序中添加方法级别的安全性。
您只需要在方法级别添加@PreAuthorize("hasRole('ROLE_USER')")
。
要使用方法级别的安全性,您需要添加
@EnableGlobalMethodSecurity(
prePostEnabled = true,
securedEnabled = true,
jsr250Enabled = true)
在securityconfig类级别。