自动化运维平台中的统一认证接入与单点登录实现
前言:
? ?????在運維開發(fā)的眾多系統(tǒng)中,怎么能更好的管理用戶賬號和密碼,以及做到統(tǒng)一的brac權(quán)限角色配置系統(tǒng)。
? ? ? 以前記得最初做運維開發(fā)項目的時候,每個app都是一套用戶密碼,頂多做了一個加密流轉(zhuǎn),申請接入的時候,需要領(lǐng)導(dǎo)的郵件審批,后期改成ldap在openldap做認(rèn)證了。 但是現(xiàn)在不這么搞了。
????更多的運維研發(fā)的內(nèi)容,請移步到我的個人博客, xiaorui.cc ?!
原因呢? ? 我相信大家公司肯定都有認(rèn)證的接口,先說下常見的認(rèn)證接口有那兩種(我就見過這兩種,希望朋友補充):
? ? ? ?第一種,公司的各個平臺通過ldap連入windows ad目錄,或者是連入特定的db。 ?當(dāng)時這樣很不安全,如果我是開發(fā)者的話,用戶輸入用戶名和密碼的時候,點擊登錄,我完全可以把賬號密碼給print出來。
? ? ? ?第二種,就是Passport的方案,算是統(tǒng)一認(rèn)證,一般是oauth,但是oauth相對麻煩點。大家有時候,要登錄論壇的時候,他會提示可以用qq,支付寶,人人的賬號登錄。 ?我現(xiàn)在的方案就是類似這種的方法,好! ?下面說下,我對這個統(tǒng)一認(rèn)證的接口使用。
? ? ? ?我自己也寫過一個 統(tǒng)一認(rèn)證平臺接口,是基于cookie方式的,實現(xiàn)的方法相對簡單,但是很有效,安全方面讓安全部門測試過,在一定條件下,還是很安全的。在以前公司開發(fā)的多個平臺也都接入了這個統(tǒng)一認(rèn)證。
語言:python
框架:tornado
模塊:requests,flask-admin,oauth2
組件:redis,mysql
前端:Bootstrap
對于python oauth2的方案,可以看 https://github.com/simplegeo/python-oauth2
這里的方案不是oauth2,因為oauth2更多的是給大批的第三方應(yīng)用設(shè)計的,咱們這里只是做passport認(rèn)證,用oauth2顯得不是太合適。
原文:http://rfyiamcool.blog.51cto.com/1030776/1362424
集群平臺clusterops clusterops.xiaorui.cc,中心認(rèn)證passport.xiaorui.cc為例,
? ? ? ?1. ? ?判斷用戶是否登錄,已經(jīng)在passport登錄的話,可以直接訪問clusterops,如果沒有登錄的話,會轉(zhuǎn)跳到 passprot.xiaorui.cc/redirect?urlto=clusterops.xiaorui.cc
? ? ? ?2. ? ?當(dāng)轉(zhuǎn)跳到 passprot.xiaorui.cc/redirect?urlto=clusterops.xiaorui.cc的時候,會提示用你的域賬戶和密碼登錄,登錄成功后,會再次轉(zhuǎn)跳到 clusterops.xiaorui.cc/api?res=aqggzwnasdzo9kzwsxedclmcksduwe8sdf0d&Token=F3fQk1eTJWu2XbWHEzuXXJ0KoJeH6O
? ? ? ? 3. ? ?clusterops接收api接口的res和Token字段數(shù)據(jù),用這兩個字段以cookie的方式去訪問passport.xiaorui.cc/getuserdata?accesstime=時間戳
? ? ? ? 4. ? ? 統(tǒng)一認(rèn)證端passport拿到了cookie在redis里面做對比,然后判斷access時間,在5分鐘之內(nèi),符合要求給他return 用戶數(shù)據(jù),如果不符合,就給他回一個錯誤數(shù)據(jù)。
? ? ? ? 5. ? ? ?clusterops解析了返回的json數(shù)據(jù),把username及一些數(shù)據(jù),放到session里面,這樣用戶就完成了認(rèn)證及登錄。
? ? ? ? 6. ? ? ?退出的話,可以選擇該app,也可以選擇清楚sso的單點登錄的sesson標(biāo)記。
原文:http://rfyiamcool.blog.51cto.com/1030776/1362424
看這個流程圖比較直觀點,一般來說我們只是對于web應(yīng)用做認(rèn)證接入,認(rèn)證后,在這個web應(yīng)用的所有動作權(quán)限,都是在web應(yīng)用本身做的。如果每個應(yīng)用和連接都再次向認(rèn)證系統(tǒng)去驗證cookie、session,那就會有瓶頸,所以用saml使兩個認(rèn)證服務(wù)器做認(rèn)證通信 !
上面說的只是統(tǒng)一認(rèn)證方面的,下面再來說說單點登錄
單點登錄SSO(Single Sign-On)是身份管理中的一部分。SSO的一種較為通俗的定義是:SSO是指訪問同一服務(wù)器不同應(yīng)用中的受保護資源的同一用戶,只需要登錄一次,即通過一個應(yīng)用中的安全驗證后,再訪問其他應(yīng)用中的受保護資源時,不再需要重新登錄驗證。
開源的sso,也有不少,我用過lemonldap這個websso方案,感覺還不錯哈。
http://lemonldap-ng.org/documentation
SSO的好處:
方便用戶:從用戶實際使用角度考慮
? ? ?用戶使用應(yīng)用系統(tǒng)時,能夠一次登錄,多次使用。用戶不再需要每次輸入用戶名稱和用戶密碼,也不需要牢記多套用戶名稱和用戶密碼。
方便管理員:從日常維護管理角度考慮
? ? ?系統(tǒng)管理員只需要維護一套統(tǒng)一的用戶賬號,方便、簡單。相比之下,系統(tǒng)管理員以前需要管理很多套的用戶賬號。每一個應(yīng)用系統(tǒng)就有一套用戶賬號,不僅給管理上帶來不方便,而且,也容易出現(xiàn)管理漏洞,開發(fā)者也不知道用戶的賬號密碼
簡化應(yīng)用系統(tǒng)開發(fā):從應(yīng)用擴展角度考慮
? ? ?開發(fā)新的應(yīng)用系統(tǒng)時,可以直接使用單點登錄平臺的用戶認(rèn)證服務(wù),簡化開發(fā)流程。單點登錄平臺通過提供統(tǒng)一的認(rèn)證平臺,實現(xiàn)單點登錄。因此,應(yīng)用系統(tǒng)并不需要開發(fā)用戶認(rèn)證程序。
單點登錄在這里就很好體現(xiàn)了,只要用戶登錄了passport統(tǒng)一認(rèn)證,登錄后平臺會session標(biāo)記,只要別的項目指向PassPort認(rèn)證,那自然而然他們都可以登錄了。
捎帶角說下,我們一定要再開發(fā)一套針對統(tǒng)一認(rèn)證passport的權(quán)限控制,不然每個應(yīng)用都自己控制admin和guest的權(quán)限,這樣該又亂套啦! 這段時間我也搞了一套權(quán)限管理接口,可以配套在統(tǒng)一認(rèn)證接口上,權(quán)限控制的很細(xì),一個頁面,一個菜單,一個動作都可以控制。
歐了,這里是我自己對于運維平臺的統(tǒng)計認(rèn)證,sso單點登錄,權(quán)限管理的理解。 我相信,我的這篇文章更加適合新手理解,當(dāng)然肯定也有理解出問題的地方,請大神指正 !
轉(zhuǎn)載于:https://blog.51cto.com/rfyiamcool/1362424
總結(jié)
以上是生活随笔為你收集整理的自动化运维平台中的统一认证接入与单点登录实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Excle数据透视表】如何快速选取所有
- 下一篇: 全程软件测试之测试需求分析与计划(2)