对flask应用程序的http协商(gssapi)身份验证支持。

Flask-GSSA的Python项目详细描述


对flask应用程序的http协商(gssapi)身份验证支持。安全 具有透明和安全的单点登录以授权用户的敏感视图 使用微软中的现有访问控件访问Samba激活 目录或FreeIPA服务器。

但是,当前用户名和票证不会公开给您的应用程序 这应该是可能的。它也不提供更细粒度的权限 系统到用户组,只有基于主机和基于服务的访问控制 由身份验证服务器实现。

安装

通过pypi安装简易方法:

$ pip install flask-gssapi

或者下载并构建自己:

$ git clone https://github.com/cour4g3/flask-gssapi
$cd flask-gssapi
$ python setup.py install

用法

用法相当简单:

fromflaskimportFlask,render_templatefromflask_gssapiimportGSSAPIapp=Flask(__name__)gssapi=GSSAPI(app)# Here, you'll need to be authenticated@app.route('/secret')@gssapi.require_authdefsecret_view():returnrender_template('secret.html')# Here, you'll need to be a specific user@app.route('/admin')@gssapi.require_user('admin')# or old-style @gssapi.require_user(user='admin')defadmin_view():returnrender_template('admin.html')# Or a list of users@app.route('/staff')@gssapi.require_user('admin','michael')defstaff_view():returnrender_template('staff.html')# You can also get the username as a keyword argument@app.route('/another-secret')@gssapi.require_authdefadmin_view(username=''):returnrender_template('another-secret.html',username=username)

配置

出于安全目的,应用程序可能不应具有对 系统的keytab,您应该为应用程序创建一个新的keytab:

$exportKRB5_KTNAME=FILE:/path/to/HTTP.keytab
$ net ads keytab create
$ net ads keytab add HTTP
$ chown httpd:httpd /path/to/HTTP.keytab

krb5_ktname将指向要使用的正确的keytab,并且可以包括 在启动脚本或服务文件中。

大多数情况下,默认值应该足够了,但是您可能需要 在某些情况下更改:

KeyDescription
GSSAPI_SERVICE_NAMEThe service name you want to authenticate against, by default this is HTTP which most browsers use.
GSSAPI_HOSTNAMEThe hostname you want authenticate against, by default this is acquired from socket.fqdn().

待办事项

  • 如果没有凭据,则提供回退到登录页或基本身份验证 提供非域连接设备。
  • 默认情况下保护所有视图的配置键,使用等效的no_auth 装饰工。

许可证

根据麻省理工学院的许可证。

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

推荐PyPI第三方库


热门话题
java如何使用Ibatis在插入时返回ID(使用返回关键字)   java(org.hibernate.TransactionException)org。冬眠TransactionException:事务未成功启动   java小程序jwindow始终位于JNLP顶部   在Java中重新解析JSON对象?   java单击后将ListView数据移动到新屏幕   Mule ESB中的java WSA寻址特性   Java,对象编程:获取返回0值的方法   hibernate的Java通用问题,如何处理T get(K id)   java在使用超级CSV读取CSV时忽略引用   ssh使用Java远程运行命令   java如何向具体用户发送websocket消息?   在JAVA中,我可以在不指定的情况下使用条件运算符吗?