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

基于Linux的Azure Web App启用Basic Authentication的方法咨询

基于Linux的Azure Web App启用Basic Authentication的方法咨询

嗨,我刚好碰到过类似的问题,Linux版的Azure Web App确实没法用Windows那套applicationHost.xdt文件的方式来配置Basic Authentication,给你几个实际可行的方案参考:

方案一:在应用代码层面实现(最推荐,无需额外服务)

这是最直接且灵活的方式,不管你用什么开发框架,都可以在应用的入口处添加Basic Auth校验逻辑,同时把敏感的账号密码存在Azure的环境变量里,避免硬编码风险。

举个Node.js Express框架的例子:

  1. 先安装依赖包:
    npm install basic-auth
    
  2. 在主入口文件中添加认证中间件:
    const auth = require('basic-auth');
    const express = require('express');
    const app = express();
    
    // Basic Auth校验中间件
    app.use((req, res, next) => {
      const userCredentials = auth(req);
      // 从Azure应用设置的环境变量中读取合法账号密码
      const validUsername = process.env.AUTH_USERNAME;
      const validPassword = process.env.AUTH_PASSWORD;
    
      if (!userCredentials || userCredentials.name !== validUsername || userCredentials.pass !== validPassword) {
        res.set('WWW-Authenticate', 'Basic realm="My Protected Web App"');
        return res.status(401).send('请输入合法的账号密码以访问');
      }
      next();
    });
    
    // 你的业务路由
    app.get('/', (req, res) => {
      res.send('欢迎访问受Basic Auth保护的页面!');
    });
    
    app.listen(process.env.PORT || 3000, () => {
      console.log('应用已启动');
    });
    
  3. 最后在Azure Web App的配置 -> 应用程序设置里添加AUTH_USERNAME和AUTH_PASSWORD两个变量,填入你的账号密码即可。

其他语言比如Python(Flask/Django)、Java(Spring Boot)也都有对应的Basic Auth实现方式,核心逻辑都是校验请求头里的Authorization字段。

方案二:用Azure前置服务做认证(无需修改代码)

如果不想改动应用代码,可以在Web App前面加一层Azure Front Door或者API Management,把Basic Auth的校验逻辑放在前置服务上:

  • 创建Azure Front Door实例,将你的Linux Web App配置为后端池
  • 在Front Door的路由规则中启用Basic Auth,配置允许的账号密码
  • 将你的域名指向Front Door的端点,这样用户访问时会先被Front Door要求输入账号密码,校验通过后才会转发请求到Web App

方案三:自定义容器场景下用Nginx配置(适合Docker部署的应用)

如果你的Web App是基于自定义Docker镜像部署的,可以通过修改Nginx配置来实现Basic Auth:

  1. 用htpasswd工具生成密码文件(可以在本地或者Docker构建阶段生成):
    htpasswd -c .htpasswd your-username
    
    执行后输入密码,会生成一个.htpasswd文件
  2. 修改Nginx的配置文件,添加认证规则:
    server {
      listen 80;
      server_name localhost;
    
      location / {
        auth_basic "受保护的应用";
        auth_basic_user_file /usr/share/nginx/html/.htpasswd; # 密码文件的路径要和容器内路径对应
        proxy_pass http://your-app-service; # 指向你的应用服务地址
      }
    }
    
  3. 将.htpasswd和修改后的Nginx配置一起打包到Docker镜像中,重新部署到Azure Web App即可。

备注:内容来源于stack exchange,提问作者Ppp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:47:59