CAS统一登录认证(8): 非典型python客户端

     根据《 CAS统一登录认证(7): 非典型.net客户端 》上篇文章的思路,重写了一个简单验证的cas python 客户端  要标准的cas python 客户端,github查找下载 cas-sample-python-webapp-master,部署拦截器,结合django 的认证机制,实现拦截和验证,本文无需设置拦截器,没有使用django的auth认证机制,只是静默的简单通过cas验证用户,访问caslogin 地址才会进行连接验证。

访问url如:  http://X.X.X.X/caslogin/

python 源码如下:

from urllib import urlencode,urlopen
from urlparse import urljoin
from django.http import HttpRequest,HttpResponse,HttpResponseRedirect
from xml.etree import ElementTree
import urllib2
import ssl

def caslogin(request):
  ssl._create_default_https_context = ssl._create_unverified_context  #取消SSL验证
  CASHOST = 'https://author.linbsoft.com.cn:8443/cas/'    #cas服务器地址
  tkt = request.GET.get('ticket')
  if not tkt:    #还没有ticket 转到cas服务器登录
	redir = CASHOST + 'login?service=' + request.build_absolute_uri()
	return HttpResponseRedirect(redir)
  validateurl = CASHOST + 'serviceValidate?ticket=' + tkt + '&service=' + request.build_absolute_uri('?')
  page=urlopen(validateurl)    #获取验证信息
  userid=''
  html=''
  try:
	response=page.read()
  finally:
	page.close()
  if response=='':
	html="user validate return null"   #获取的验证信息为null
  else:
	if  'not recognized' in response:    #验证未通过
		html="ticket not recongized"
	else: #验证通过,获取用户
		userid=response
		request.session['username']=userid
		html="sucess login user:" + userid
  return  HttpResponse(html)

访问后,未登录cas,会转到cas登录界面,登录后返回,显示登录用户名

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值