Django实现中科院+ OAuth2的方法

  介绍

本篇文章给大家分享的是有关Django实现中科院+ OAuth2的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强> CAS <强>

<强>解决方案

<李>

使用CAS作为认证协议。

<李>

作为主要的认证提供方(供应商).

<李>

保留用户系统,其余系统如xxx/www不保留用户系统,即供应商的实现在A .

<李>

实现步骤

<李>

xxx选择登录,跳转到LMS的认证界面,中科院读取数据库进行认证,重定向到xxx的界面并且附带票在url中,在浏览器中存入饼干。

<李>

xxx得到票后向中科院发送票验证有效性。

<李>

xxx允许用户访问内部资源。

<强> Django代码

初始化一个客户项目

django-admin  startproject  cas-client

安装依赖

pip  install  django-mama-cas  #,服务器   pip  install  django-cas-ng  #,客户机

服务器

#, settings.py   INSTALLED_APPS =, (   & # 39;才能mama_cas& # 39;   )      #,允许退出登录,可选的项   MAMA_CAS_ENABLE_SINGLE_SIGN_OUT =,真的      #,重要!服务是客户机的IP,是个数组,可以在后面添加服务的主机:端口。   MAMA_CAS_SERVICES =, (   {才能   ,,,& # 39;服务# 39;:,& # 39;http://127.0.1.1:8000& # 39;   ,,,& # 39;回调,:,   ,,,,,& # 39;mama_cas.callbacks.user_model_attributes& # 39;,,,, #,返回除了密码的所有字段   ,,,,,,# & # 39;mama_cas.callbacks.user_name_attributes& # 39;,,, #,只返回,用户名   ,,,,   ,,,& # 39;LOGOUT_ALLOW& # 39;:,真的,   ,,,& # 39;LOGOUT_URL& # 39;:, & # 39; http://127.0.1.1:8000/账户/回调# 39;   ,,},   ]      #,urls . py   url(" # 39; & # 39;,,包括(& # 39;mama_cas.urls& # 39;)),

不要忘记:

python3  manage.py 迁移

<强>客户

#, settings.py   INSTALLED_APPS =, (   #才能,…,other  installed 应用   & # 39;才能django_cas_ng& # 39;   )      AUTHENTICATION_BACKENDS =, (   & # 39;才能django.contrib.auth.backends.ModelBackend& # 39;   & # 39;才能django_cas_ng.backends.CASBackend& # 39;   )      #,也就是LMS的地址   时间=CAS_SERVER_URL  & # 39; http://127.0.0.1:8000& # 39;   时间=CAS_VERSION  & # 39; 3 & # 39;      #,存入所有CAS 服务端返回用户的数据。   CAS_APPLY_ATTRIBUTES_TO_USER =,真的      #,urls . py   import  django_cas_ng.views  as  cas_views   url(" # 39; ^账户/登录$ & # 39;,,cas_views.login,, name=& # 39; cas_ng_login& # 39;),   url(" # 39; ^账户/注销$ & # 39;,,cas_views.logout,, name=& # 39; cas_ng_logout& # 39;),/回调url(" # 39; ^账户$ & # 39;,,cas_views.views.callback,, name=& # 39; cas_ng_proxy_callback& # 39;),

python3  manage.py 迁移

使用流程

<李>

客户端上选择登录,后台重定向到服务器的/账户/登录。

<李>

认证通过,在客户机上的主机下会有登录Cookie,成功登录到系统,重定向到客户的主页。

<李>

客户端上选择退出,后台重定向到服务器的/账户/注销。

<强>注意事项

<李>

服务器与客户端不能在同一个主机下,会发生500内部错误,因为饼干要存回客户机的主机下。

<李>

本地测试下,客户机启动在127.0.1.1:8000的时候,要在设置。py中ALLOWED_HOSTS中添加这个IP。

<李>

客户端要实现接收空路由情况,在CAS服务器认证完毕后,返回地址为根地址。

<李>

客户端退出登录同样要经过CAS服务器,同时要在CAS服务器中打开允许退出登录。

<强> Oauth3结合CAS搭建认证系统

<李>

在中科院页面,点击Github登录,利用状态参数保存当前页面的服务参数。

<李>

点击确认登陆后,返回状态,获取用户数据,重定向到一个处理函数。

<李>

登录系统,发送票,重定向到服务。

<李>

两个请求不是同一个请求,所以无法或用会话cookie保存服务的url。

以上就是Django实现中科院+ OAuth2的方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

Django实现中科院+ OAuth2的方法