OpenIDConnect的FlaskAppBuilder安全管理器

fab-oidc2的Python项目详细描述


用于OpenIDConnect的Flask AppBuilder安全管理器

PyPI

用于flask_oidc2的包装器,它公开了一个SecurityManager,可用于任何Flask AppBuilder应用程序。在

它将允许你的用户使用OpenIDConnect提供商(如Auth0、Okta或googleapps)登录。此版本的代码提取OIDC ID令牌的角色信息,并且仅当该角色在应用程序上可用时,才允许请求继续。在

这大概是受stackoverflow答案中的代码启发的。(麻省理工学院许可证)

使用

通用

只需覆盖Flask Appbuilder应用程序中的默认安全管理器。在

fromfab_oidc2.securityimportOIDCSecurityManagerappbuilder=AppBuilder(app,db.session,security_manager_class=OIDCSecurityManager)

Airflow

Airflow在webserver_config.py文件中提供了一个钩子,您可以在其中指定安全管理器类。 在webserver_config.py中导入OIDCSecurityManager并设置

^{pr2}$

气流现在要求您的SECURITY_MANAGER_CLASSAirflowSecurityManager的子类。 使用特殊的AirflowOIDCSecurityManager,只有当你在气流旁边使用这个库时才定义它。在

Superset

超集的工作原理与此类似。就像气流一样, SECURITY_MANAGER_CLASS必须是{}的子类 配置文件在一个名为superset_config.py的文件中,钩子被调用 CUSTOM_SECURITY_MANAGER。现在有一种特殊的 SupersetOIDCSecurityManager它只在使用时定义 超集旁边的图书馆。在

fromfab_oidc2.securityimportSupersetOIDCSecurityManager...CUSTOM_SECURITY_MANAGER=SupersetOIDCSecurityManager

设置

这些设置与[flask_-oidc settings][flask_-oidc\u-settings]相同,因此可以在那里查找参考。在

如果您对[flask_-oidc]的默认值满意,那么您真正需要的是:

OIDC_CLIENT_SECRETS='/path/to/client_secret.json'

有关如何生成或编写文件,请参阅[flask_oidc manual client registration][flask_oidc_manual_config]文档。在

OIDC字段配置

如果要更改将用作用户名的默认OIDC字段, 名字、姓氏和通过OIDC角色授予访问权限,可以在运行的shell中设置以下env var 您的流程:

exportUSERNAME_OIDC_FIELD='preferred_username'exportFIRST_NAME_OIDC_FIELD='given_name'exportLAST_NAME_OIDC_FIELD='family_name'exportENABLE_ROLE_OIDC_ACCESS='true'exportROLES_OIDC_FIELD='roles'

项目状态

这是项目的一个分支[ministryofjustice/fab-oidc]:https://github.com/ministryofjustice/fab-oidc

版权所有©2018 HM政府(司法部数字服务部)。看到了吗许可证.txt更多细节。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener