You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一Quarkus实例中同时保护REST API与Web应用?

Quarkus单实例托管前端与REST端点的安全实现方案

一、单实例场景的替代方案

除了多租户配置+自定义URL解析的方式,还有两种更简洁的原生支持方案:

  • 基于路径的OIDC流区分:Quarkus OIDC支持按路径配置不同的认证流。为前端路径(如/ui/*)配置授权码流适配Web前端登录,为REST API路径(如/api/*)配置Bearer令牌流适配服务间调用,无需自定义代码。典型配置示例:
    # 前端UI的OIDC授权码流配置
    quarkus.oidc.auth-ui.paths=/ui/*
    quarkus.oidc.client-id=web-frontend-client
    quarkus.oidc.credentials.secret=your-client-secret
    quarkus.oidc.authorization-path=/protocol/openid-connect/auth
    quarkus.oidc.token-path=/protocol/openid-connect/token
    
    # REST API的OIDC Bearer流配置
    quarkus.oidc.api.paths=/api/*
    quarkus.oidc.api.client-id=rest-api-client
    quarkus.oidc.api.bearer-only=true
    
  • 自定义安全过滤器:实现ContainerRequestFilter或SecurityIdentityAugmentor接口,根据请求路径判断请求类型,分别应用前端会话验证或API令牌校验逻辑。这种方式灵活性更高,但需要编写更多自定义代码。

二、前后端分离部署的官方支持情况

你提到的前端与REST服务分属不同Quarkus实例、前端通过Bearer令牌调用服务的方案,是Quarkus官方推荐的微服务架构范式,完全受官方支持:

  • 前端实例(托管Qute)通过授权码流完成用户登录,将访问令牌存储在HttpOnly Cookie中;
  • 前端发起API请求时,自动将令牌放入Authorization: Bearer <token>请求头;
  • 后端实例配置为bearer-only模式,仅负责验证令牌有效性,不处理登录跳转等前端逻辑。
    该方案的优势在于前后端安全边界清晰,可独立扩容维护,符合现代云原生应用的设计原则。

补充说明

你关注的并行使用两种OIDC流的方案,核心就是基于路径的配置思路,属于单实例场景下的原生解决方案,无需依赖复杂的多租户配置。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:52:22