python3 + cas_ng

ruike
2019-05-05 / 0 评论 / 1 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年01月09日,已超过543天没有更新,若内容或图片失效,请留言反馈。

这两天废了九牛二虎之力完成了python3.5接入cas server, 废话少说,步骤如下:

1.基础环境

  • python 3.5.4
  • django 2.0
  • 对接的cas server 3.5.2
  • 注:cas对外提供的是https python的环境算是比较新的了,所以坑比较多。cas我偷懒了用了个老版本

2、django对接cas环境的安装

(1)安装python-cas,这个建议下载1.2.0版本以上的

  • 解压---> python setup.py install

(2)安装django_cas_ng 这个建议3.5.8以上,这时候坑就来了

(3)配置的setting.py,其中AUTHENTICATION_BACKENDS可能没有,需要你自行添加

INSTALLED_APPS = ( 
    'django.contrib.admin', 
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_cas_ng',
    ... 
)
 MIDDLEWARE_CLASSES =(
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    
    ... 
) 
AUTHENTICATION_BACKENDS = ( 
    'django.contrib.auth.backends.ModelBackend', 
    'django_cas_ng.backends.CASBackend', 
)

CAS_SERVER_URL="cas server的地址"
CAS_REDIRECT_URL="你网站的主页"

(4)配置url.py,

增加

import django_cas_ng.views
url(r'^accounts/login$', django_cas_ng.views.login, name='cas_ng_login'), 
url(r'^accounts/logout$', django_cas_ng.views.logout, name='cas_ng_logout'),
url(r'^accounts/callback$', django_cas_ng.views.callback, name='cas_ng_proxy_callback'),

(5)配置数据库

首先查看你的数据库是否有,下表:

  • auth_group
  • auth_group_permissions
  • auth_permission
  • auth_user
  • auth_user_groups
  • auth_user_user_permissions

要是没有的话请执行:

python manage.py makemigrations
python manage.py migrate 

然后查看是否有:

  • django_cas_ng_proxygrantingticket
  • django_cas_ng_sessionticket

要是没有的话,请执行:

python manage.py makemigrations django_cas_ng
python manage.py migrate django_cas_ng

(6)访问

要是你的cas server 是http的,
现在你就可以访问http://django的ip+port/accounts/login,
要是转到cas上,就说明你成功了
要是你的cas server 是https的,请在django的主机是添加环境变量export REQUESTS_CA_BUNDLE="证书的路径"
这里的证书必须是PEM格式的,否则会报requests.exceptions.SSLError: unknown error (_ssl.c:3165)
如果你的证书使用keytool转换的,请再用下面的命令把之前的证书转换为PEM格式的
openssl x509 -inform der -in server.cer -out server.pemaccounts/login
到此配置完毕,你可以访问http://django的ip+port/accounts/login,要是转到cas上,就说明你成功了

0

评论 (0)

取消