欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django實(shí)現(xiàn)CAS+OAuth2的方法示例

 更新時(shí)間:2019年10月30日 15:37:07   作者:Wind_white  
這篇文章主要介紹了Django實(shí)現(xiàn)CAS+OAuth2的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

CAS

Solution

  • 使用CAS作為認(rèn)證協(xié)議。
  • A作為主要的認(rèn)證提供方(provider)。
  • A保留用戶系統(tǒng),其余系統(tǒng)如xxx/www不保留用戶系統(tǒng),即Provider的實(shí)現(xiàn)在A。
  • 實(shí)現(xiàn)步驟
    • xxx 選擇登錄,跳轉(zhuǎn)到LMS的認(rèn)證界面,CAS讀取數(shù)據(jù)庫(kù)進(jìn)行認(rèn)證,redirect到xxx的界面并且附帶ticket在url中,在瀏覽器中存入Cookie。
    • xxx得到ticket后向CAS發(fā)送ticket驗(yàn)證有效性。
    • xxx允許用戶訪問內(nèi)部資源。

django代碼

初始化一個(gè)client項(xiàng)目

django-admin startproject cas-client

Install Dependencies

pip install django-mama-cas # server
pip install django-cas-ng # client

Server

# settings.py
INSTALLED_APPS = (
  'mama_cas',
)

# 允許退出登錄,可選項(xiàng)
MAMA_CAS_ENABLE_SINGLE_SIGN_OUT = True

# 重要!,service是client的IP,是個(gè)數(shù)組,可以在后面添加SERVICE的HOST:PORT。
MAMA_CAS_SERVICES = [
  {
    'SERVICE': 'http://127.0.1.1:8000',
    'CALLBACKS': [
      'mama_cas.callbacks.user_model_attributes',   # 返回除了password的所有Field
      # 'mama_cas.callbacks.user_name_attributes',  # 只返回 username
    ],
    'LOGOUT_ALLOW': True,
    'LOGOUT_URL': 'http://127.0.1.1:8000/accounts/callback',
  },
]

# urls.py
url(r'', include('mama_cas.urls')),
 

不要忘記:

python3 manage.py migrate

Client

# settings.py
INSTALLED_APPS = (
  # ... other installed apps
  'django_cas_ng',
)

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

# 也就是LMS的地址
CAS_SERVER_URL = 'http://127.0.0.1:8000'
CAS_VERSION = '3'

# 存入所有CAS 服務(wù)端返回的user數(shù)據(jù)。
CAS_APPLY_ATTRIBUTES_TO_USER = True

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

Also:

python3 manage.py migrate

使用流程

  • client上選擇登錄,后臺(tái)redirect到server的/accounts/login。
  • 認(rèn)證通過,在client上的host下會(huì)有登錄Cookie,成功登錄到系統(tǒng),重定向到client的主頁(yè)。
  • client上選擇退出,后臺(tái)redirect到server的/accounts/logout。

注意事項(xiàng)

  • server與client不能在同一個(gè)host下,會(huì)發(fā)生500內(nèi)部錯(cuò)誤,因?yàn)镃ookie要存回client的host下。
  • 本地測(cè)試下,client啟動(dòng)在127.0.1.1:8000的時(shí)候,要在settings.py中ALLOWED_HOSTS中添加這個(gè)IP。
  • client端要實(shí)現(xiàn)接收空路由情況,在CAS Server認(rèn)證完畢后,返回地址為根地址。
  • client端退出登錄同樣要經(jīng)過CAS Server,同時(shí)要在CAS Server中打開允許退出登錄。

Oauth2 結(jié)合 CAS 搭建認(rèn)證系統(tǒng)

  • 在CAS頁(yè)面,點(diǎn)擊Github登錄,利用state參數(shù)保存當(dāng)前頁(yè)面的service參數(shù)。
  • 點(diǎn)擊確認(rèn)登陸后,返回state,獲取用戶數(shù)據(jù),重定向到一個(gè)處理函數(shù)。
  • 登錄系統(tǒng),發(fā)送ticket,重定向到service。
  • 兩個(gè)request不是同一個(gè)request,所以無(wú)法用session或cookie保存service的url。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在win64上使用bypy進(jìn)行百度網(wǎng)盤文件上傳功能

    在win64上使用bypy進(jìn)行百度網(wǎng)盤文件上傳功能

    這篇文章主要介紹了在win64上使用bypy進(jìn)行百度網(wǎng)盤文件上傳功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • OpenCV半小時(shí)掌握基本操作之直方圖

    OpenCV半小時(shí)掌握基本操作之直方圖

    這篇文章主要介紹了OpenCV基本操作之直方圖,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • python bottle框架支持jquery ajax的RESTful風(fēng)格的PUT和DELETE方法

    python bottle框架支持jquery ajax的RESTful風(fēng)格的PUT和DELETE方法

    下面小編就為大家?guī)?lái)一篇python bottle框架支持jquery ajax的RESTful風(fēng)格的PUT和DELETE方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-05-05
  • Python并發(fā)爬蟲常用實(shí)現(xiàn)方法解析

    Python并發(fā)爬蟲常用實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Python并發(fā)爬蟲常用實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python pandas 組內(nèi)排序、單組排序、標(biāo)號(hào)的實(shí)例

    python pandas 組內(nèi)排序、單組排序、標(biāo)號(hào)的實(shí)例

    下面小編就為大家分享一篇python pandas 組內(nèi)排序、單組排序、標(biāo)號(hào)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-04-04
  • pandas對(duì)dataFrame中某一個(gè)列的數(shù)據(jù)進(jìn)行處理的方法

    pandas對(duì)dataFrame中某一個(gè)列的數(shù)據(jù)進(jìn)行處理的方法

    這篇文章主要介紹了pandas對(duì)dataFrame中某一個(gè)列的數(shù)據(jù)進(jìn)行處理的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python定間隔取點(diǎn)(np.linspace)的實(shí)現(xiàn)

    python定間隔取點(diǎn)(np.linspace)的實(shí)現(xiàn)

    今天小編就為大家分享一篇python定間隔取點(diǎn)(np.linspace)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-11-11
  • Python?pygame新手入門基礎(chǔ)教程

    Python?pygame新手入門基礎(chǔ)教程

    大家都知道pygame是跨平臺(tái)Python模塊,專為電子游戲設(shè)計(jì),包含圖像、聲音,這篇文章主要給大家介紹了關(guān)于Python?pygame新手入門基礎(chǔ)教程的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 使用Python實(shí)現(xiàn)畫一個(gè)中國(guó)地圖

    使用Python實(shí)現(xiàn)畫一個(gè)中國(guó)地圖

    今天小編就為大家分享一篇使用Python實(shí)現(xiàn)畫一個(gè)中國(guó)地圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2019-11-11
  • python常用模塊詳解

    python常用模塊詳解

    今天小編就為大家分享一篇關(guān)于舉例講解Python常用模塊,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2021-10-10

最新評(píng)論