内容简介:本文记录在使用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 , 转载请保留原文链接.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 云转码接入视频网站解决方案 express-ffmpeg接入discuz方案
- #研发解决方案#数据移山:接入、迁移、同步一站式
- 酷家乐如何使用 Istio 解决新服务治理系统 (Serverless) 接入已有成熟自研 Java 服务治理体系
- 数据接入治理平台
- 【Netty】如何接入新连接
- 有赞统一接入层架构演进
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Smashing Book
Jacob Gube、Dmitry Fadeev、Chris Spooner、Darius A Monsef IV、Alessandro Cattaneo、Steven Snell、David Leggett、Andrew Maier、Kayla Knight、Yves Peters、René Schmidt、Smashing Magazine editorial team、Vitaly Friedman、Sven Lennartz / 2009 / $ 29.90 / € 23.90
The Smashing Book is a printed book about best practices in modern Web design. The book shares technical tips and best practices on coding, usability and optimization and explores how to create succes......一起来看看 《The Smashing Book》 这本书的介绍吧!