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

Docker中MLflow开启Basic Auth后,设置MLFLOW_TRACKING_TOKEN仍遇401错误

MLflow Basic认证模式下Bearer Token请求401问题解决

问题核心原因

你通过mlflow server --app-name basic-auth启动的是MLflow内置的Basic专属认证模式,该模式仅支持账号密码形式的HTTP Basic认证,完全不处理Bearer Token类型的请求。

官方文档中提到的MLFLOW_TRACKING_TOKEN用于Bearer认证,是针对支持Bearer的MLflow服务端配置(如自定义认证后端、OAuth2集成场景),而非内置的basic-auth应用。

解决方案

方案1:继续使用Basic认证(适配当前服务端)

若要通过环境变量实现认证,不要使用MLFLOW_TRACKING_TOKEN,需同时设置以下两个环境变量:

export MLFLOW_TRACKING_USERNAME=admin
export MLFLOW_TRACKING_PASSWORD=password

之后在代码中可自动读取环境变量完成认证:

import requests
import os

# 使用环境变量构造Basic Auth参数
response = requests.get(
    r'http://<tracking_uri:5000/api/2.0/mlflow/experiments/search',
    json={"max_results":10},
    auth=(os.getenv("MLFLOW_TRACKING_USERNAME"), os.getenv("MLFLOW_TRACKING_PASSWORD"))
)

或者使用MLflow官方客户端,会自动读取环境变量:

import mlflow

mlflow.set_tracking_uri("http://<tracking_uri:5000>")
# 后续调用MLflow API时自动携带认证信息
experiments = mlflow.search_experiments(max_results=10)

方案2:切换到支持Bearer Token的认证模式

如果必须使用Bearer Token,需放弃内置的basic-auth应用,配置支持Bearer的认证后端:

  • 编写自定义MLflow认证插件,实现Bearer Token的校验逻辑
  • 集成第三方OAuth2服务作为MLflow的认证提供者

关键提示

你直接在请求头中传入Bearer <random_string>无效,是因为当前服务端(basic-auth模式)只会校验Basic Auth格式的Authorization头,对Bearer类型的请求直接返回401未授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:20:23