首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在API网关(Kong HQ) + Keycloak + Spring启动微服务上管理授权

在API网关(Kong HQ) + Keycloak + Spring启动微服务上管理授权
EN

Stack Overflow用户
提问于 2022-09-07 15:29:12
回答 2查看 229关注 0票数 0

我正在开发一个Microservices体系结构,在该架构中我使用了以下组件:

  1. KongHQ作为API网关
  2. 作为IAM解决方案的Keycloak
  3. 用Spring编写的微服务。

我的基本要求是将身份验证/授权与Spring微服务完全分离。因此,API的认证和授权应该在API网关层进行。大多数文章和教程都会重新注释,以便将Keycloak与Spring集成在一起。我真的很想知道这个要求是否可行,如果是的话,如何做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-07 19:50:37

出于两个原因,我不愿解除对微型服务的安全保护:

  • 访问控制是我想要进行单元测试的业务需求。
  • spring-安全性可能更强大(表现力、可测试性等)超过任何API网关安全筛选器。

您不必将密钥披风与spring集成(实际上,您不应该这样做,因为春天用的钥匙斗篷不推荐。)。

Spring安全有用于资源服务器的工具。这里的样品

我还在非常的基础上编写了( spring-boot-starter-oauth2-resource-server )瘦层以简化资源-服务器配置。大多数配置选项都可以从属性中获得,这些属性在微服务中保存了相当多的Java代码。那里的样品

遵循高级教程,您甚至可以构建一个与@PreAuthorize("is(#username) or isNice() or onBehalfOf(#username).can('greet')")一样具有表现力的安全DSL。祝您在API getway中实现同样的目标。

上面链接的回购还包含了许多用于配置单元测试安全上下文的注释:

代码语言:javascript
复制
    @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!"));
    }
票数 0
EN

Stack Overflow用户

发布于 2022-09-09 05:55:05

下面是一篇非常详细的文章,介绍API和keycloak:https://apisix.apache.org/blog/2022/07/06/use-keycloak-with-api-gateway-to-secure-apis/的用法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73638093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档