cas系统简介

提供运营系统的 SSO 和 access control功能。类似百度的UC。

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。官方网站:https://www.apereo.org/

CAS 具有以下特点:

  • 开源的企业级单点登录解决方案。

  • CAS Server 为需要独立部署的 Web 应用。

  • CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

从结构上看,CAS 包含两个部分:CAS Server 和 CAS Client。

  • CAS Server 需要独立部署,主要负责对用户的认证工作;

  • CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

Python接入cas示例

一、soc环境

python3.6.9 + django 2.1.7 + django-cas-ng 3.6.0

二、cas服务端

cas 3.5.2 (yale大学开源)

三、配置流程

3.1、settings.py 配置

3.1.1、 配置INSTALLED_APPS:添加django_cas_ng到INSTALLED_APPS

INSTALLED_APPS = [  'django.contrib.admin',  'django.contrib.auth',  'django.contrib.contenttypes',  'django.contrib.sessions',  'django.contrib.messages',  'django.contrib.staticfiles',  'django_cas_ng']

3.1.2、配置MIDDLEWARE:添加django_cas_ng.middleware.CASMiddleware到MIDDLEWARE:

MIDDLEWARE = [  'django.middleware.security.SecurityMiddleware',  'django.contrib.sessions.middleware.SessionMiddleware',  'django.middleware.common.CommonMiddleware',  'django.middleware.csrf.CsrfViewMiddleware',  'django.contrib.auth.middleware.AuthenticationMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',  'django.middleware.clickjacking.XFrameOptionsMiddleware',  'django_cas_ng.middleware.CASMiddleware']

3.1.3、配置AUTHENTICATION_BACKENDS:添加django_cas_ng.backends.CASBackend到AUTHENTICATION_BACKENDS:

AUTHENTICATION_BACKENDS = (  'django.contrib.auth.backends.ModelBackend',  'django_cas_ng.backends.CASBackend',)

3.1.4、配置CAS服务器URL和CAS协议版本:(咱们的cas是3.5.2 cas_version 需要填写对应的2;当前最新版的版本是3;版本号不能填错,否则无法认证通过)

CAS_SERVER_URL = 'https://test-cas.xxx.com/cas/'

CAS_VERSION = '2'

CAS_REDIRECT_URL = "/server/api/portmonitor/gpb/" #认证通过后跳转到的目录

以上是settings.py中的配置

#####################################################################

下面是代码中的配置

3.1.5、配置  mysite/urls.py:

from django.contrib import adminfrom django.urls import pathimport django_cas_ng.viewsfrom . import viewsurlpatterns = [    path('', views.index, name='index'),    path('admin/', admin.site.urls),    path('accounts/login', django_cas_ng.views.LoginView.as_view(), name='cas_ng_login'),    path('accounts/logout', django_cas_ng.views.LogoutView.as_view(), name='cas_ng_logout'),]

3.1.6、mysite / views.py

创建一个名为的新文件mysite/views.py并实现index方法。

演示视图将使用检查用户身份验证request.user.is_authenticated。如果通过身份验证,它将从以下位置获取登录的用户名   request.user.username

from django.httpimport HttpResponsedef index(request):    if request.user.is_authenticated: ##使用request对象可以做权限控制        return HttpResponse('<p>Welcome to <a href="https://djangocas.dev">django-cas-nga>.p><p>You logged in as <strong>%sstrong>.p><p><a href="/accounts/logout">Logouta>                 p>'      % request.user) else: return HttpResponse('<p>Welcome to <a href="https://djangocas.dev">django-cas-nga>.p><p><a href="/accounts/login">Login<

四、生成数据库

只需要直接执行 migrate 就可以了,我默认用的sqlite3数据库

$ python manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, django_cas_ng, sessionsRunning migrations:  Applying contenttypes.0001_initial... OK  Applying auth.0001_initial... OK  Applying admin.0001_initial... OK  Applying admin.0002_logentry_remove_auto_add... OK  Applying admin.0003_logentry_add_action_flag_choices... OK  Applying contenttypes.0002_remove_content_type_name... OK  Applying auth.0002_alter_permission_name_max_length... OK  Applying auth.0003_alter_user_email_max_length... OK  Applying auth.0004_alter_user_username_opts... OK  Applying auth.0005_alter_user_last_login_null... OK  Applying auth.0006_require_contenttypes_0002... OK  Applying auth.0007_alter_validators_add_error_messages... OK  Applying auth.0008_alter_user_username_max_length... OK  Applying auth.0009_alter_user_last_name_max_length... OK  Applying auth.0010_alter_group_name_max_length... OK  Applying auth.0011_update_proxy_permissions... OK  Applying django_cas_ng.0001_initial... OK  Applying sessions.0001_initial... OK

可以登陆数据库检查新生成的表:一共新增6张表

sqlite3 db.sqlite3root@xxx:/apps/soc_test# sqlite3 db.sqlite3SQLite version 3.22.0 2018-01-22 18:45:57Enter ".help" for usage hints.sqlite> .tablesauth_group                         django_admin_log                auth_group_permissions             django_cas_ng_proxygrantingticketauth_permission                    django_cas_ng_sessionticket      auth_user                          django_content_type              auth_user_groups                   django_migrations                auth_user_user_permissions         django_session

五、运行项目测试

$ python manage.py runserver 0.0.0.0:80Performing system checks.........Django version 2.1.7, using settings 'mysite.settings'Starting development server at http://ip:80/Quit the server with CONTROL-C.

cas .net 重定向循环_接口测试平台接入企业cas(一)相关推荐

  1. Linux 搭建NodeBB社区,搭建CAS登录认证平台,实现Nodebb接入企业CAS认证(一)

    一,搭建Nodebb社区 1,安装编译环境nodejs,npm安装后版本号如下(同时得安装redis, git常用开发软件): 2,下载nodebb代码 git clone git://github. ...

  2. unittest 多个测试文件只开一次浏览器_接口测试平台代码实现75: 多接口用例15

    根据我们上一节最后的投票. 引入unittest框架 碾压了第一种.其实我个人也偏向这个.因为我尝试过很多,但是唯独没有引入unittest在接口测试平台中.所以借此机会,也想挑战一下,涨点经验. 请 ...

  3. html留言板代码_接口测试平台代码实现19.首页优化

    按照最近俩天 小伙伴的反馈激烈程度,本节课准备把首页添加一个非常有用户黏性的一个功能.公司内的各个超链接传送门! 新来的公司的小伙伴经常会因为找不到各个平台/文档的地址而发懵.老员工跨部门工作的时候也 ...

  4. Linux 搭建NodeBB社区,搭建CAS登录认证平台,实现Nodebb接入企业CAS认证(二)

    上编文章已经实现nodebb,cas的搭建,这个文章就是如何实现nodebb接入cas认证 一,Nodebb的插件开发,实现对cas的接入 1,下载cas接入插件, GitHub - ld000/no ...

  5. 接口测试用例设计思路_接口测试平台设计思路10:成品总览白盒模块

    白盒测试平台的开发,我们要首先思考四件事: 我们对白盒测试手动测试到底会还是不会. 我们要做几种开发语言代码的测试 重点是主要用来管理-运行-报告,还是用来自动生成相关用例 这个事情到底值不值的去做, ...

  6. html div分钟刷新一次啊代码_接口测试平台代码实现57首页重构5

    本节我们接着开发首页, 主要内容是 让左侧的请求记录和右侧的请求模块 联动起来. 具体联动需求: 右侧请求一次之后,左侧生成记录 点击左侧记录,右侧则会显示这次记录的请求数据 我们本节课的内容是想办法 ...

  7. ride上点击用例不能显示edit信息_接口测试平台代码实现61: 多接口用例1

    终于又序更上了,原谅最近作者几天事情不断. 按照我们之前的计划,需要迅速开启很重要的核心多用例接口. 首先,我们要确定,这个功能的大体设计. 就放在在我们的页面 用例库 中: 所以也就是我们很久之前就 ...

  8. 请求到后台百分号被删除原因_接口测试平台代码实现85: 全局请求头1

    本节开始要制作一些次要功能,但是也是非常实用的.比如项目内的全局请求头. 首先看我们的前端页面,这个全局请求头的按钮: 我的设计是呢,点击后,出现一个弹层,这个弹层里除了保存/取消按钮 标题外.要有一 ...

  9. html调后台接口_接口测试平台代码实现62: 多接口用例2

    好了,最近水了好多期,终于要写点代码了. 本节内容,我们搞定这个多接口的大用例 列表相关吧,难度基本为0,都是我们之前用到过的. 出现bug或者建议的 小伙伴可以直接留言或进微信群,但是可惜的是微信群 ...

最新文章

  1. 安装Exchange2013,FMS服务无法达到启动状态
  2. 如何学好3D游戏引擎编程《转自3D游戏引擎网》
  3. java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...
  4. 电信联通三联手 “事实婚姻”还是临时取暖?
  5. cgminer linux cpu,Ubuntu Kylin中编译运行cgminer挖矿软件
  6. fastweixin v1.3.0 发布,极速微信公众号开发框架
  7. 前端学习(778):随机数方法
  8. javascript数组去重方法性能测试比较
  9. repeater使用1
  10. 2013年1月12日学习内容
  11. java系列5:如何使用创建的类
  12. idea设置主题路径
  13. h3csyslog_H3C-syslog配置命令
  14. 保护眼睛——设置WIN7和XP 窗体、Chrome、IE网页背景颜色
  15. 吞食天地2蜀汉英雄传1.5版图文攻略
  16. 嵌入式系统基础——Unbuntu的初步使用
  17. 偏微分 python_基于Python求解偏微分方程的有限差分法.doc
  18. Http request传输图片和附属信息(old)
  19. 电脑桌面云便签怎么通过便签快捷键锁屏加密?
  20. 2022工作中遇到问题一

热门文章

  1. lua打开浏览器并加载网页_Lua访问网页
  2. 人机协作机器人发展趋势_发那科童梁:机器人化不是时髦!有效的人机协作投资回报率更高...
  3. linux下sqlmap安装教程,(转)Sqlmap官网下载与安装教程[windows/linux版本]
  4. 启动项 mysql命令大全_mysql常用命令
  5. C++基础16-类和对象之联编,重写,虚析构
  6. 错误之data_insertt() takes 1 positional argument but 2 were given解决方法
  7. Pytest参数选项自由执行测试用例详解(二)
  8. node中间件KOA函数
  9. 超文本css样式换行
  10. Icon+启动图尺寸