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

如何在Azure上部署的Kubernetes系统中实现认证

低成本K8s+Azure环境下的认证方案建议

一、推荐的免费简便认证策略

  • JWT + Ingress网关校验:分布式场景首选,无需额外部署认证服务,直接在Ingress层完成JWT验证,轻量且对后端服务侵入性低。
  • OAuth2.0(基于开源Keycloak):Keycloak是完全免费的开源认证服务器,支持授权码、密码等多种OAuth2模式,自带用户管理界面,适合教育项目展示完整的认证流程。
  • Basic Auth(临时/内部使用):最简单的快速实现方式,直接通过Ingress配置完成,适合内部测试或临时保护服务,但安全性较弱,不建议对外暴露。

二、Kubernetes集成实现细节

1. JWT集成(NGINX Ingress为例)

NGINX Ingress支持直接配置JWT校验,无需额外服务:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: backend-ingress
  annotations:
    # 内置JWT校验配置(需提前创建包含密钥的Secret)
    nginx.ingress.kubernetes.io/auth-jwt-secret: "jwt-secret"
    nginx.ingress.kubernetes.io/auth-jwt-token: "$http_authorization"
    nginx.ingress.kubernetes.io/auth-jwt-issuer: "your-token-issuer"
spec:
  rules:
  - host: your-domain.com
    http:
      paths:
      - path: /api/users
        pathType: Prefix
        backend:
          service:
            name: user-service
            port: { number: 80 }

如果需要自定义校验逻辑,也可以用auth-url指定一个简单的校验服务,Ingress会把请求转发到该服务验证Token有效性。

2. Keycloak集成

  • 先把Keycloak部署到K8s:用Deployment+Service+Ingress的组合,配置PersistentVolumeClaim保存用户数据。
  • 在Keycloak中创建Realm、客户端和用户,配置客户端的重定向URI指向你的前端地址。
  • 前端集成Keycloak SDK,实现登录跳转;后端服务通过Ingress的auth-url调用Keycloak的Token校验接口,或直接在代码中验证JWT。

3. Basic Auth集成

生成加密的用户名密码文件:

htpasswd -c auth admin

创建K8s Secret存储认证信息:

kubectl create secret generic basic-auth --from-file=auth

在Ingress中引用该Secret开启Basic Auth:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: backend-ingress
  annotations:
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-realm: "请输入认证信息"
spec:
  # 路由规则配置...

三、Azure专属免费认证方案

1. Azure Active Directory(AAD)免费层

方案1:Ingress集成AAD OAuth2

利用NGINX Ingress的认证注解,将流量导向AAD完成登录:

metadata:
  annotations:
    nginx.ingress.kubernetes.io/auth-url: "https://login.microsoftonline.com/你的租户ID/oauth2/v2.0/token"
    nginx.ingress.kubernetes.io/auth-signin: "https://login.microsoftonline.com/你的租户ID/oauth2/v2.0/authorize?client_id=你的客户端ID&response_type=code&redirect_uri=https://你的域名/callback"

步骤:

  • 在AAD中注册应用,获取租户ID、客户端ID。
  • 配置应用的重定向URI为你的前端回调地址。
  • 确保Ingress能访问AAD的认证端点。

方案2:Azure AD Pod Identity(服务间认证)

适合后端服务之间或服务调用Azure资源时的认证,免费层可用:

  • 创建AAD托管身份,授予其访问目标资源的权限。
  • 在K8s中部署Azure AD Pod Identity控制器,将托管身份绑定到需要认证的Pod。
  • 服务通过Azure SDK自动获取Token,无需硬编码密钥,实现无密认证。

2. Azure App Service内置认证

如果你的前端或后端服务部署在Azure App Service上,可直接启用App Service的内置认证功能,一键绑定AAD,无需编写额外认证代码,免费层支持基础的登录、Token验证功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:08:19