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