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

Azure Kubernetes运行的前后端应用外部访问安全(AuthN/AuthZ)方案咨询

解决方案说明

你可以完全通过Azure原生工具实现需求,无需修改现有应用代码、无需调整当前部署架构,不需要做底层编码。整体基于Azure AD身份服务 + 现有Ingress Controller的访问校验能力实现,两个需求的实现逻辑如下:

1. 前端用户访问管控(仅授权用户可访问前端)

  • 以Azure AD作为终端用户的身份源,在Azure AD中注册前端应用,配置允许访问的用户/用户组,开启用户授权校验
  • 给当前使用的Ingress Controller添加OAuth2身份校验注解,所有访问前端域名的请求会在Ingress层被拦截,未登录用户会跳转至Azure AD统一登录页
  • 仅当用户完成Azure AD登录、且属于预设的授权用户范围时,请求才会被放行至前端Pod,否则直接返回403拒绝访问

2. 后端API访问管控(仅授权服务可调用后端API)

  • 在Azure AD中注册后端API应用,暴露API调用权限,为需要调用后端的授权服务分配对应服务主体与API访问权限
  • 给后端API对应的Ingress规则添加JWT令牌校验注解,Ingress层会自动校验所有访问后端API请求携带的Authorization头
  • 仅当请求携带的JWT令牌由当前Azure AD租户签发、且包含对应API的访问权限时,请求才会被放行至后端Spring Boot Pod,无合法令牌或权限不足的请求会直接返回401/403
基础配置示例

以下为NGINX Ingress Controller的核心配置注解示例,替换对应租户、客户端ID参数即可生效:

前端Ingress配置

annotations:
  nginx.ingress.kubernetes.io/auth-url: "https://login.microsoftonline.com/<Azure_AD租户ID>/oauth2/v2.0/authorize"
  nginx.ingress.kubernetes.io/auth-signin: "https://login.microsoftonline.com/<Azure_AD租户ID>/oauth2/v2.0/authorize?client_id=<前端客户端ID>&response_type=code&redirect_uri=$scheme://$host$request_uri&scope=openid profile email"
  nginx.ingress.kubernetes.io/auth-response-headers: "Authorization"

后端API Ingress配置

annotations:
  nginx.ingress.kubernetes.io/auth-url: "https://login.microsoftonline.com/<Azure_AD租户ID>/oauth2/v2.0/introspect"
  nginx.ingress.kubernetes.io/auth-method: "POST"
  nginx.ingress.kubernetes.io/auth-response-headers: "X-Service-Principal-ID X-API-Permissions"

如果你当前使用的是Azure原生Application Gateway Ingress Controller(AGIC),可以直接在Azure门户中为Application Gateway配置对应身份校验规则,无需手动编写Ingress注解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:48:01