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

Airflow 2.1.1集成Keycloak(OAuth2)后无法登出报访问被拒绝求助

问题修复方案

核心问题排查及修正

你当前配置存在3处直接导致登出报错的问题,按优先级调整即可:

  1. OAuth提供商名称配置错误
    你当前对接的是Keycloak,但配置里OAUTH_PROVIDERS的name字段写为了google,Flask-AppBuilder会根据该字段匹配对应 OAuth 服务的登出逻辑,名称不匹配会导致登出请求参数构造错误。
  2. Keycloak登出参数缺失
    Keycloak的OIDC登出端点要求必须传递client_id和post_logout_redirect_uri两个参数,你仅配置了logout_redirect_url,参数不全导致Keycloak直接返回access is denied。
  3. 登出逻辑适配版本问题
    Airflow 2.1.1依赖的Flask-AppBuilder版本需明确指定登出请求构造逻辑,仅配置logout_redirect_url不生效。

修正后可用配置参考

from flask_appbuilder.security.manager import AUTH_OAUTH
import os
import json
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True
AUTH_USER_REGISTRATION_ROLE = "User"

# a mapping from the values of `userinfo["role_keys"]` to a list of FAB roles
AUTH_ROLES_MAPPING = {
    "FAB_USERS": ["User"],
    "FAB_ADMINS": ["Admin"],
}

OAUTH_PROVIDERS = [
    {'name':'keycloak', 'icon':'fa-key', 'token_key':'access_token',
        'remote_app': {
            'client_id':'airflow',
            'client_secret':'xxxxxxxxxxxxxxxxxxxx',
            'api_base_url':'https://keycloak-1.dastc.stee.com:8443/auth/realms/sep',
            'client_kwargs':{
              'scope': 'email profile openid roles'
            },
            'request_token_url':None,
            'access_token_url':'https://keycloak-1.dastc.stee.com:8443/auth/realms/sep/protocol/openid-connect/token',
            'authorize_url':'https://keycloak-1.dastc.stee.com:8443/auth/realms/sep/protocol/openid-connect/auth',
            'userinfo_endpoint':'https://keycloak-1.dastc.stee.com:8443/auth/realms/sep/protocol/openid-connect/userinfo',
            # 调整后的登出配置,替换<>包裹的内容为你实际的Airflow访问地址
            'logout_url':'https://keycloak-1.dastc.stee.com:8443/auth/realms/sep/protocol/openid-connect/logout?client_id=airflow&post_logout_redirect_uri=https://<your-airflow-access-address>/logout'
        }
    }
]

额外检查项

  • 登录Keycloak管理后台,进入airflow客户端配置页,在「有效登出重定向URI」配置项中添加你Airflow的登出回调地址(即上面配置的post_logout_redirect_uri的值),地址需要完全匹配。
  • 若Keycloak使用自签名SSL证书,需要将证书导入CentOS7系统信任证书库,避免Airflow发起登出请求时因证书校验失败被拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:45:04