使用SpringBoot和Keycloak的安全方法

时间:2017-02-24 12:39:09

标签: spring spring-boot spring-data keycloak

在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似乎没有那么好用。

2 个答案:

答案 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类级别。