Odoo接入CAS统一认证系统

背景:

CAS介绍:

CAS ( Central Authentication Service ),最初由耶鲁大学的Shawn Bayern
开发,后由Jasig社区维护,经过十多年发展,目前已成为影响最大、广泛使用的、基于Java实现的、开源SSO解决方案。cas旨在为 Web应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。 CAS 开始于 2001 年, 并在 2004 年 12 月正式成为JA-SIG 的一个项目。

CAS原理:

在这里插入图片描述
cas单点登录流程理解:

  1. 浏览器请求cas客户端(接入cas的系统)时,cas客户端对当前请求浏览器校验是否存在session(odoo系统中则校验当前cookie是否存在session_id值,根据session_id值判断/data/sessions文件夹内是否存在对应session。如启用redis管理session,则在redis中查询是否存在对应session_id的数据判断是否登录)。
  2. 如校验无登录cas客户端,则返回重定向到cas服务器。链接形如:https://localcas:8443/cas/login?service=http%3A%2F%2F192.168.99.102%3A8069%2Fweb%2Flogin。
    其中https://localcas:8443/cas/login为cas服务器登录地址,service参数值为cas客户端登录地址
  3. 通过用户名密码登录cas认证系统,认证成功后携带ticket参数重定向到cas客户端登录 地址,形如:
    http://192.168.99.102:8069/web/login?ticket=ST-17-3hA0-atfanDFWw4beSnHodOdMCY-DESKTOP-RAY
  4. 浏览器请求重定向地址到cas客户端。
  5. cas客户端获取请求参数ticket,并携带ticket参数请求cas服务端换取用户。
  6. 成功获取用户名则创建session,设置cookie值。让浏览器重定向到cas客户端系统首页。
  7. 没有成功获取用户名则返回cas服务端登录地址。

PS:CAS认证系统通过cookie值中Jsession_id值判断是否通过CAS认证。

核心代码:

  1. 安装python-cas库
pip install python-cas
  1. 引入cas库 修改controllers里登录的方法
# -*- coding:utf-8 -*-

import cas
import odoo
import random
import werkzeug
import xmltodict
import configparser
from odoo import _
from odoo import http
from odoo.service import security
from odoo.addons.web.controllers import main
from odoo.tools import ustr, consteq, frozendict, pycompat
from odoo.http import request, Response, Root, OpenERPSession


class HomeFLih(main.Home):

    # OA单点登录
    @http.route('/web/login', type='http', auth="none",csrf=False, sitemap=False)
    def web_login(self, redirect=None, **kw):
        if 'logoutRequest' in kw:
            return self.web_logout(redirect=redirect,**kw)
        # 生成CAS客户端类实例
        client = cas.CASClient(
            # CAS 版本 ,V1,V2,V3 版本
            version='3',
            # CAS 服务端登录地址,有get_login_url方法拼接/login 生成
            server_url='https://localcas:8443/cas/',
            # CAS 客户端登录地址
            service_url='http://192.168.99.102:8069/web/login',
            # 是否校验ssl证书
            verify_ssl_certificate=False
        )
        # 判断是否有ticket参数
        if 'ticket' in request.params:
            ticket = request.params.get('ticket','')
            # 请求CAS服务端,使用ticket换取用户名
            res = client.verify_ticket(ticket
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Odoo是一种基于Python开发的企业管理软件系统,它提供了一整套集成的应用程序,包括销售、采购、库存管理、会计、人力资源管理、生产制造等多个模块。其主要特点是开源、灵活、可定制和易于使用。 Odoo系统使用了Python作为主要开发语言,Python是一种简单易学、功能强大的编程语言,因此在开发Odoo系统时能够快速、高效地实现各种功能和模块。同时,Python还具有丰富的第三方库和工具,可以轻松解决开发中遇到的各种问题,为Odoo系统的开发带来了便利。 在Odoo系统的开发过程中,开发人员主要通过Python语言来编写模块代码,实现各种功能。通过Odoo的开发框架,可以方便地创建新的模块,并在已有的模块基础上进行修改和扩展。开发人员可以使用Odoo系统提供的丰富API来访问和操作数据库,实现数据的增删改查等操作,从而满足用户的需求。 Odoo系统还提供了丰富的界面设计工具和报表工具,可以帮助开发人员创建美观、易用的用户界面和各种报表,并通过Python语言编写业务逻辑和数据处理代码,实现系统的核心功能。 总之,Odoo系统的开发离不开Python语言的支持,Python的简洁和强大使得开发人员能够快速高效地开发出功能完善、易用的企业管理软件系统。同时,Odoo系统的开发也得益于Python生态系统的丰富,这使得开发人员能够更加便捷地解决问题,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值