我正在开发一个Microservices体系结构,在该架构中我使用了以下组件:
我的基本要求是将身份验证/授权与Spring微服务完全分离。因此,API的认证和授权应该在API网关层进行。大多数文章和教程都会重新注释,以便将Keycloak与Spring集成在一起。我真的很想知道这个要求是否可行,如果是的话,如何做呢?
发布于 2022-09-07 19:50:37
出于两个原因,我不愿解除对微型服务的安全保护:
您不必将密钥披风与spring集成(实际上,您不应该这样做,因为春天用的钥匙斗篷不推荐。)。
Spring安全有用于资源服务器的工具。这里的样品。
我还在非常的基础上编写了( spring-boot-starter-oauth2-resource-server )瘦层以简化资源-服务器配置。大多数配置选项都可以从属性中获得,这些属性在微服务中保存了相当多的Java代码。那里的样品。
遵循高级教程,您甚至可以构建一个与@PreAuthorize("is(#username) or isNice() or onBehalfOf(#username).can('greet')")一样具有表现力的安全DSL。祝您在API getway中实现同样的目标。
上面链接的回购还包含了许多用于配置单元测试安全上下文的注释:
@Test
@ProxiesAuth(
authorities = { "AUTHOR" },
claims = @OpenIdClaims(preferredUsername = "Tonton Pirate"))
void whenHimselfThenCanGreetFor() throws Exception {
mockMvc.get("/greet/on-behalf-of/Tonton Pirate").andExpect(status().isOk()).andExpect(content().string("Hi Tonton Pirate from Tonton Pirate!"));
}发布于 2022-09-09 05:55:05
下面是一篇非常详细的文章,介绍API和keycloak:https://apisix.apache.org/blog/2022/07/06/use-keycloak-with-api-gateway-to-secure-apis/的用法。
https://stackoverflow.com/questions/73638093
复制相似问题