我正在使用 keycloak 23.0.6、spring-boot 和 keycloak-admin-client maven 依赖项。
keycloak.realm("realm-name").clients().get("client-id").authorization().permissions().scope()
只有3个功能:create
、findById
和findByName
,但没有列表功能。
keycloak 的 REST 端点不是限制因素,您可以在那里列出所有范围权限:GET /admin/realms/<realm>/clients/<client-id>/authz/resource-server/permission/scope
,所以 keycloak-admin-client 库中似乎缺少它。
有没有我在这里遗漏的方法,或者我是否手动实现 HTTP 请求并解析结果?
我也尝试过使用keycloak-authz-client,也没有找到列表功能。
我明白了:
fun listAllScopedPermissions(): List<ScopePermissionRepresentation> {
realm().clients().findByClientId(keycloakProperties.client.id).first().id.let { clientId ->
val uri = URI.create("${keycloakProperties.url}/admin/realms/<realm>/clients/${clientId}/authz/resource-server/permission/scope")
val proxy = keycloak.proxy(CustomScopePermissionsResource::class.java, uri)
return proxy.findAll()
}
}
interface CustomScopePermissionsResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
fun findAll(): List<ScopePermissionRepresentation>
}