1. 程式人生 > 程式設計 >詳解使用django-mama-cas快速搭建CAS服務的實現

詳解使用django-mama-cas快速搭建CAS服務的實現

當公司有多條產品線,或者有多個不同的應用的時候,每次都做登入是個非常煩人的事情。(原諒我沒有從SSO的角度看這個問題。。對我來說能偷懶少寫點東西最實在)。為什麼需要每次都做個登入?做登入就意味著我的系統還得要有使用者、角色、選單管理,天啊!RBAC又來了(攤手)。

當我新做一個應用的時候,我最希望的就是這些東西都是現有的,接入一下就可以用了,一方面來說省事,另外一方面來說,也節省測試的時間。從服務的角度來看,認證這種動作也應該被劃分到一個具體的服務裡面去。

為什麼沒有用Jasig

無論是OSC還是Github裡面,基於Jasig的實現還是非常多的,不過Jasig也太多配置項了。。看著頭暈。大週末的時間不適合想那麼複雜的事情。。然後翻到了django-cas這個系列的專案,不過django-cas這個專案早就停更了,另外還有django-mama-cas和django-cas-ng,試了下django-cas-ng。。文件不全,看著比較累(週末的時候腦袋發揮不了全部狀態。。。。),django-mama-cas這個專案倒是挺不錯的,文件全,配置容易。一下就搞出來了(不過API上面還不是非常全,比起其他來說還是好很多的啦)

安裝django-mama-cas

pip install django-mama-cas

更新配置

INSTALLED_APPS = (
  # ...existing apps...
  'mama_cas',)

更新路由

urlpatterns = [
  # ...existing urls...
  url(r'^cas/',include('mama_cas.urls')),]

添加回調,這裡使用內建的,也可以自己擴充套件。回撥主要是登入後可以用ticket過來換使用者的其他資訊

MAMA_CAS_SERVICES = [
  {
    'SERVICE': 'http://127.0.0.1:8000','CALLBACKS': [
      'mama_cas.callbacks.user_model_attributes',],},]

好啦~到此該配置的都配好了。然後就可以使用了,這個app最主要的api有2個

http://127.0.0.1:8000/cas/login?service=http://127.0.0.1:8000/admin


這個是用於登入的,service就是認證後要幫你回撥到哪,回撥過去之後有個Ticket的,自己存起來

Ticket拿到之後就可以過來換使用者資訊了,使用者的資訊都取得到,然後自行放到session裡面就完事。

小結

Django-mama-cas這個專案還是非常簡單易用的,下次把Oauth配合一下就可以很方便的把統一認證和RBAC的事情都在這個服務搞定了,這種功能每次都寫還真是很煩人的

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。