python3 saml包的uw特定适配器。

uw-saml的Python项目详细描述


uw saml

Build StatusCoverage Status

一个特定于uw的适配器 python3-saml包。这个包裹 是为与其他idp联合而构建的,但默认情况是使用uw 身份提供程序。它可以用于任何框架。对于Django的特定 包装,也考虑 uw-django-saml2

安装

pip install uw-saml[python3-saml]

额外的[python3-saml]是因为saml包对于 在工作站环境中安装,因为需要libxmlsec1 dev 图书馆。因此,这是一个可选的要求,会导致运行时错误 而不是安装时错误。或者,可以使用模拟 通过设置uw_saml2.python3_saml.MOCK = True进行接口。

使用烧瓶的登录端点示例

在这个例子中 SP Registry并注册了 实体id为https://samldemo.iamdev.s.uw.edu/saml,acs端点为 https://samldemo.iamdev.s.uw.edu/saml/login。获取将返回 重定向到idp进行身份验证,posts将尝试处理saml 回应。

fromflaskimportrequest,session,redirectimportuw_saml2@app.route('/saml/login',methods=['GET','POST'])deflogin():session.clear()args={'entity_id':'https://samldemo.iamdev.s.uw.edu/saml','acs_url':'https://samldemo.iamdev.s.uw.edu/saml/login'}ifrequest.method=='GET':args['return_to']=request.args.get('url',None)returnredirect(uw_saml2.login_redirect(**args))attributes=uw_saml2.process_response(request.form,**args)session['userid']=attributes['uwnetid']session['groups']=attributes.get('groups',[])relay_state=request.form.get('RelayState')ifrelay_stateandrelay_state.startswith('/'):returnredirect(urljoin(request.url_root,request.form['RelayState']))return'Welcome '+session['userid']

注意事项

会话

请考虑会话的生存期。本例中的会话作为 签名的cookie。理想情况下,cookie会在浏览器关闭时过期,同时 一些适合你申请的时间限制。再举一个烧瓶的例子 十分钟内…

fromdatetimeimporttimedeltaapp.config.update(PERMANENT_SESSION_LIFETIME=timedelta(minutes=10))

重放攻击预防

默认情况下,此包使用内存缓存检查重播攻击。 要使用分布式缓存,如redis或memcached,您可以插入 将对象缓存到uw_saml2.auth.CACHE。下面是一个如何做到这一点的例子…

importwerkzeug.contrib.cacheimportuw_saml2.authuw_saml2.auth.CACHE=werkzeug.contrib.cache.RedisCache()

django的缓存后端使用相同的方法,因此也可以注入。

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

推荐PyPI第三方库


热门话题
java Android HttpClient cookies   如何使用Java在远程系统上运行SSH命令?   java从字符串数组中的字符串末尾删除“,”   在One plus 3t手机上,当应用程序被终止或从最近的应用程序中刷出时,java Android FCM推送通知不起作用   java如何使垂直滚动条始终位于jtable的末尾   在java中解析迄今为止“未知”的字符串   javascript在Java中获取Nashorn JsonObject   java windows 10和ubuntu可以使用相同的JDK吗?   java在不同的文件中记录不同的日志。但所有日志都放在同一个文件中   具有特定jdk的java Gradle构建项目   xml Java web服务生成错误响应   javascript Jaggery文件更改不显示   java输出二进制搜索树数组   将BufferedReader解析为JSON对象时,java在位置处意外标记文件结尾