标签: flask-appbuilder

如何禁用 Airflow 登录以进行身份​​验证和授权?

我有一个 apache 气流分支,我想在代理服务器后面运行它。所有身份验证都将在气流之外处理,因此我不希望客户再次使用另一组凭据登录。有什么方法可以从气流中完全删除/禁用身份验证。

基本上,我想摆脱这个初始登录屏幕,并允许任何到达气流的人都拥有用户(非管理员)访问权限。[最坏的情况是管理员访问也可以。]

在此处输入图片说明

flask python-3.x airflow flask-appbuilder

11
推荐指数
2
解决办法
5098
查看次数

具有 RBAC 功能的 Airflow LDAP 身份验证

我正在尝试使用 RBAC 功能启用 Airflow LDAP 身份验证,并进行了以下更改:

  1. 从airflow.cfg 中删除了LDAP 部分
  2. 修改airflow.cfg:在[webserver]部分下 添加rbac = true和删除authentication = True
  3. AIRFLOW_HOME目录下 创建 webserver_config.py 文件

webserver_config.py 文件包含:

import os

from airflow import configuration as conf

from flask_appbuilder.security.manager import AUTH_LDAP

basedir = os.path.abspath(os.path.dirname(__file__))

SQLALCHEMY_DATABASE_URI = conf.get(‘core’, ‘SQL_ALCHEMY_CONN’)

CSRF_ENABLED = True

AUTH_TYPE = AUTH_LDAP

AUTH_ROLE_ADMIN = ‘Admin’

AUTH_USER_REGISTRATION = True

AUTH_USER_REGISTRATION_ROLE = “Admin”

AUTH_LDAP_SERVER = ‘ldaps://ldap.xxx.yyy.net:636‘

AUTH_LDAP_SEARCH = “ou=Users,o=corp”

AUTH_LDAP_BIND_USER = ‘cn=ldap-proxy,ou=Users,o=corp’

AUTH_LDAP_BIND_PASSWORD = ‘YOUR_PASSWORD’

AUTH_LDAP_UID_FIELD = ‘uid’

AUTH_LDAP_USE_TLS = False

AUTH_LDAP_ALLOW_SELF_SIGNED = …
Run Code Online (Sandbox Code Playgroud)

ldap rbac airflow flask-appbuilder

6
推荐指数
1
解决办法
1686
查看次数

如何在python flask AppBuilder中将LDAP AD组映射到用户角色

我目前正在尝试将LDAP中的用户组自动映射到基于Flask AppBuilder框架的应用程序中的用户角色,但无法提出解决方案。我已经阅读了整个Flask AppBuilder文档,但没有找到与此相关的内容。这是我想出的基本配置。我不知道如何将不同的角色映射到不同的用户组。

   AUTH_TYPE = AUTH_LDAP
   AUTH_LDAP_SERVER = "ldap://ldapserver.local"
   AUTH_LDAP_USE_TLS = False
   AUTH_LDAP_SEARCH = "dc=domain,dc=local"
   AUTH_LDAP_BIND_USER = "CN=Query User,OU=People,dc=domain,dc=local"
   AUTH_LDAP_BIND_PASSWORD = "password"
   AUTH_USER_REGISTRATION = True
   AUTH_USER_REGISTRATION_ROLE = "Admin"
Run Code Online (Sandbox Code Playgroud)

python ldap flask superset flask-appbuilder

5
推荐指数
1
解决办法
388
查看次数

将 KeyCloak(OpenID Connect) 与 Apache SuperSet 结合使用

我从在Superset 中使用 OpenID/Keycloak 开始,并按照说明进行了所有操作。但是,这是一个旧帖子,并非一切都有效。我还尝试通过将其安装为 FAB 附加组件来实现自定义安全管理器,以便在我的应用程序中实现它,而无需编辑现有的超集代码。

我正在运行 KeyCloak 4.8.1.Final 和 Apache SuperSet v 0.28.1

正如帖子中所解释的,SuperSet 开箱即用并不能很好地与 KeyCloak 配合使用,因为它使用 OpenID 2.0 而不是 KeyCloak 提供的 OpenID Connect。

第一个区别是pull request 4565被合并后,不能再做:

from flask_appbuilder.security.sqla.manager import SecurityManager
Run Code Online (Sandbox Code Playgroud)

相反,您现在必须使用:(根据 UPDATING.md 文件)

from superset.security import SupersetSecurityManager
Run Code Online (Sandbox Code Playgroud)

在上面提到的帖子中,海报展示了如何分别创建管理器和查看文件,但没有说把它放在哪里。我将管理器和视图类放在同一个文件中,命名为manager.py,并将它放在 FAB 附加结构中。

from flask_appbuilder.security.manager import AUTH_OID
from superset.security import SupersetSecurityManager
from flask_oidc import OpenIDConnect
from flask_appbuilder.security.views import AuthOIDView
from flask_login import login_user
from urllib.parse import quote
from flask_appbuilder.views import ModelView, SimpleFormView, expose
import logging

class …
Run Code Online (Sandbox Code Playgroud)

openid flask keycloak flask-appbuilder apache-superset

5
推荐指数
1
解决办法
3830
查看次数

如何在 Flask App Builder / Airflow 中跳过额外的“登录方式”页面

我已开始使用Apache Airflow(基于 FAB 构建)并通过 OAuth 启用身份验证(如FAB Security中所示)。我只有一个 OAUTH_PROVIDER(天蓝色)。

仅供参考,气流版本 2.1.4

当我启动气流主页时,它用于打开我的 OAUTH_PROVIDER 的直接登录页面。

Airflow 2.1.4 登录页面

现在,当我将气流升级到 2.2.4 并配置相同的 OAUTH (Azure) 提供程序时,真正的问题开始了。

当我启动气流主页时,页面如下所示

Airflow 2.2.4 登录页面

单击“使用 azure 登录”按钮后,将出现用户登录页面。

与旧版气流相比,最新版本多了一个页面。

为什么对我来说很重要?

我们正在 Web 应用程序中渲染气流,这个额外的“登录方式”页面看起来不太好。

请提供一些有关跳过额外互动的信息。

flask-security airflow flask-appbuilder

5
推荐指数
1
解决办法
1426
查看次数

用于 superest 的 Flask appbuilder 中的 SecurityManager 装饰器

我正在尝试在超集中添加来自 OAuth 的自定义用户信息检索,该超集中构建在 Flask-appbuilder 之上。

官方文档提供以下信息:

使用 SecurityManager oauth_user_info_getter 装饰器装饰您的方法。让您的方法接受本示例中的确切参数,然后返回包含检索到的用户信息的字典。

http://flask-appbuilder.readthedocs.io/en/latest/security.html#authentication-oauth

文档中的示例也没有多大帮助,因为装饰器被放在注释中。

我在 Superset 中将自定义装饰器放在哪里?我已将自定义装饰器放在 superset_config.py 中,但我没有为我工作。

python flask flask-appbuilder apache-superset

3
推荐指数
1
解决办法
2080
查看次数

Flask Appbuilder 的 AWS Cognito OAuth 配置

我正在使用 Airflow 设置 RBAC,并在本地开始测试。我已通过控制台配置了 AWS Cognito 用户组。此外,我有一个 webserver_config.py 文件,已安装到 Airflow docker 容器中,以使用 RBAC 设置 OAuth。

我的 webserver_config.py 文件中的相关部分:

COGNITO_URL = os.getenv('COGNITO_URL')
CONSUMER_KEY = os.getenv('COGNITO_CLIENT_KEY')
SECRET_KEY = os.getenv('COGNITO_CLIENT_SECRET')

# When using OAuth Auth, uncomment to setup provider(s) info
# Google OAuth example:
OAUTH_PROVIDERS = [{
  'name':'AWS Cognito',
    'whitelist': ['@company.com'],  # optional
    'token_key':'access_token',
    'icon':'fa-amazon',
        'remote_app': {
            'base_url': os.path.join(COGNITO_URL, 'oauth2/idpresponse'),
            # 'base_url': COGNITO_URL,
            'request_token_params':{
                'scope': 'email profile'
            },
            'access_token_url': os.path.join(COGNITO_URL, 'oauth2/token'),
            'authorize_url': os.path.join(COGNITO_URL, 'oauth2/authorize'),
            'request_token_url': None,
            'consumer_key': CONSUMER_KEY,
            'consumer_secret': SECRET_KEY,
        }
}]
Run Code Online (Sandbox Code Playgroud)

变量如下: …

python oauth amazon-cognito airflow flask-appbuilder

3
推荐指数
1
解决办法
3202
查看次数

Flask-Appbuilder根据用户更改默认登录页面

我正在使用Flask App构建器来制作基本网页。我想根据登录的用户更改默认登录页面,例如,用户1登录后应重定向到/ home / user1页面,用户2应登录到/ home / general页面等。

以下是我的自定义索引视图

  class MyIndexView(IndexView):
  index_template = 'index.html'

  @expose('/')
  def main(self):
      return redirect(url_for('AuthDBView.login'))

  @expose('/index')
  def index(self):
      return self.render_template('index.html', message="Welcome to my website")
Run Code Online (Sandbox Code Playgroud)

并通过调用启动应用

appbuilder = AppBuilder(app, db.session, indexview=MyIndexView)
Run Code Online (Sandbox Code Playgroud)

我还没有看到任何有关如何实现此目的的示例或文档。非常感谢您的帮助

python flask flask-appbuilder

2
推荐指数
1
解决办法
1218
查看次数

Apache SuperSet中的Oauth身份验证

我正在尝试通过Oauth2 在Apache SuperSet中启用身份验证.

由于它是基于Flask AppBuilder构建的,它支持OAuth并且非常易于设置和使用,因此它应该是直截了当的.

我设法使以下两个示例与Twitter Oauth配置无缝协作:

  1. FAB OAuth示例
  2. flask-oauthlib例子

现在我正在尝试将相同的配置应用于SuperSet.

搬运工人

由于我无法手动为几个神秘的python错误构建项目(在Windows 7/Ubuntu Linux和Python版本2.7和3.6上试过),我决定使用这个Superset docker镜像(安装并正常工作)并注入我的配置正如文档所建议的那样:

按照Apache Superset提供的说明编写自己的superset_config.py.将此文件放在本地目录中,并将此目录安装到容器内的/home/superset/.superset.

我添加了一个superset_config.py(在一个文件夹中,单独一个)并通过添加到Dockerfile以下内容安装它:

ADD config .superset/config
Run Code Online (Sandbox Code Playgroud)

(config是文件夹的名称)或(对于单个文件):

COPY superset_config.py .superset
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,文件最终都在容器中的正确位置(我查看docker exec /bin/bash),但Web应用程序没有显示差异:没有Twitter身份验证的痕迹.

有人能弄清楚我做错了什么吗?

python flask docker flask-appbuilder apache-superset

2
推荐指数
1
解决办法
2595
查看次数