解决Flask-CAS接入SSO的报KeyError问题

栏目: Python · 发布时间: 6年前

内容简介:本文记录在使用Flask开发Web服务时遇到的CAS单点登录的接入问题以及解决方案CAS是一个企业SSO系统,支持CAS/OpenId/Oauth/SAML等协议,用于企业内部Web系统的SSO。Web 认证系统,企业内部passport

本文记录在使用Flask开发Web服务时遇到的CAS单点登录的接入问题以及解决方案

CAS简介

CAS是一个企业SSO系统,支持CAS/OpenId/Oauth/SAML等协议,用于企业内部Web系统的SSO。

CAS是什么

Web 认证系统,企业内部passport

CAS不是什么

  • CAS不是session管理,session需要应用自己管理
  • 权限管理: CAS不负责应用内部的权限管理。应用需要负责管理哪些用户可以登录,哪些不可以;并且需要负责应用内部权限控制。

概念定义:

  • 下游系统: 待接入CAS认证的Web系统,如git, jira,wiki等

相关文档

参考文档: https://apereo.github.io/cas/5.0.x/planning/Architecture.html CAS协议:https://apereo.github.io/cas/5.0.x/protocol/CAS-Protocol.html

官方 Python 实现

第三方CAS client:https://github.com/cameronbwhite/Flask-CAS 客户端示例程序: https://github.com/cas-projects/cas-sample-python-webapp

使用问题:

1、flask_cas在解析sso返回的xml数据的时候,有个bug

.一般的xml解析在解析相同的组数据会有两种情况,只有一条数据的时候返回字符串,多条数据的时候返回数组。但是在下面取验证信息的时候,flask_cas没有对这两种情况同时处理。需要对源码进行修改一下,同时兼容两种数据类型。

最简单的修改方式,在routing.py中的128行

attributes[“cas:memberOf”] = attributes[“cas:memberOf”].lstrip(‘[’).rstrip(‘]’).split(‘,’) 修改为 attributes[“cas:memberOf”] = str(attributes[“cas:memberOf”]).lstrip(‘[’).rstrip(‘]’).split(‘,’)

如果这方法仍然解决不了问题,那么请按照这个 commit 修改

2、遇到KeyError: ‘cas:attributes’报错

原因:使用pip安装flask-CAS时默认安装的时1.0.0,bug在1.0.1版本中被修复

解决:克隆git中的源码手动安装flask-CAS

本文首次发布于ElseF’s Blog, 作者 @stuartlau , 转载请保留原文链接.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据之美

数据之美

邱南森 (Nathan Yau) / 张伸 / 中国人民大学出版社 / 2014-2-1 / CNY 89.00

这是一本教我们如何制作完美可视化图表,挖掘大数据背后意义的书。作者认为,可视化是一种媒介,向我们揭示了数据背后的故事。他循序渐进、深入浅出地道出了数据可视化的步骤和思想。本书让我们知道了如何理解数据可视化,如何探索数据的模式和寻找数据间的关联,如何选择适合自己的数据和目的的可视化方式,有哪些我们可以利用的可视化工具以及这些工具各有怎样的利弊。 作者给我们提供了丰富的可视化信息以及查看、探索数......一起来看看 《数据之美》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具