多系統☧☬☸✡♁✙♆。,、':∶;,如何打通用戶✵✶✷✸✹✺✻✼❄❅,實現統一的身份認證웃유ღ♋♂?
我們之前寫過如何通過Drupal構建站群系統ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,如果需要請點擊查閱:《站群系統介紹》☾☽❄☃。
站群系統就面臨一個問題♦☜☞☝✍☚☛☟✌✽✾✿❁❃,就是打通用戶❣❦❧♡۵,所有的網站的用戶都用同一身份認證⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。此外☧☬☸✡♁✙♆。,、':∶;,在高校⒜⒝⒞⒟⒠⒡⒢⒣⒤、企事業單位經常會有眾多系統ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,那么如何同一管理這些用戶和用戶認證呢⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯? 本文就如何通過Drupal實現統一的SSO認證作為重點ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,來講解如何通過開源方案ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,實現統一身份認證㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。
統一的身份認證ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,一般我們都會通過標準的協議來實現❣❦❧♡۵,比如常用的有一下幾種:
(1)CAS認證系統ⓣⓤⓥⓦⓧⓨⓩ。
(2)SSO認證ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ。
(3)OAuth 2.0認證ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ。
三種方案對比❻❼❽❾❿⓫⓬⓭⓮⓯⓰,我們采用OAuth認證웃유ღ♋♂,因為CAS和SSO都有局限性㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,OAuth是無狀態❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,并且支持手機⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ、WEBⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ、第三方應用都可以ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,開放程度相當高㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。
OAuth 2.0 認證
Open auth❻❼❽❾❿⓫⓬⓭⓮⓯⓰,本質上是把用戶登錄⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,輸入用戶名和密碼⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,放到一個中心網站✺ϟ☇♤♧♡♢♠♣♥,當用戶登錄成功ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,就直接跳到目標網站♦☜☞☝✍☚☛☟✌✽✾✿❁❃,那么用戶的密碼只需要保存一份即可✵✶✷✸✹✺✻✼❄❅,比較方便ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。
Open Auth的認證模式是多種的⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,因此可以兼容WEB✺ϟ☇♤♧♡♢♠♣♥、手機APPⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ、應用程序等☈⊙☉℃℉❅,因此第三方所有的應用都可以通過Oauth接入統一登錄系統⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,因此Oauth也提供多種授權方式⒜⒝⒞⒟⒠⒡⒢⒣⒤,每一種授權方式⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,可以兼容不同的場景♦☜☞☝✍☚☛☟✌✽✾✿❁❃,如下所示:
(1)授權碼(authorization-code)
(2)隱藏式(implicit)
(3)密碼式(password)
(4)客戶端憑證(client credentials)

如何架設Oauth服務
Oauth本質上❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,就做用戶管理⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓、用戶修改密碼㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉、用戶登錄這三件事情ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,此外通過額外的配置ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,可以管理用戶在不同站點的role♀☿☼☀☁☂☄,也就是說可以在不同的站點ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,用戶擁有不同的角色和權限☈⊙☉℃℉❅。
Oauth服務⑰⑱⑲⑳⓪⓿❶❷❸❹❺,我們可以通過Drupal來架設❻❼❽❾❿⓫⓬⓭⓮⓯⓰,Drupal本身自帶用戶系統ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,那么加上Oauth模塊即可⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,Simple OAuth模塊可以迅速實現一個OAuth ServerⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,生成客戶端的APPID 和KEYⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,就可以辦法給客戶端使用♀☿☼☀☁☂☄,比較方便✵✶✷✸✹✺✻✼❄❅。

站群系統的架設
通過Oauth我們就實現了統一的身份認證⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,這樣就不需要多次登錄以及管理用戶⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,多個站點就可以共享用戶信息❻❼❽❾❿⓫⓬⓭⓮⓯⓰,達到了單點登錄的目標❻❼❽❾❿⓫⓬⓭⓮⓯⓰。
比如⑰⑱⑲⑳⓪⓿❶❷❸❹❺,在圖書館內部⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,我們就可以通過如下的方式實現單點登錄:
統一的用戶管理和認證中心

統一的用戶管理和認證后臺

所以☾☽❄☃,綜上所述㈠㈡㈢㈣㈤㈥㈦,當我們有多個站點①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,比如信息站ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,財務管理☾☽❄☃,圖書館等系統ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,需要我們通過Oauth打通集成在一起的時候웃유ღ♋♂,那我們可以采用如下的架構方案:

與現有的用戶審批系統對接
很多單位㈠㈡㈢㈣㈤㈥㈦,已經有了用戶管理系統ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,并且包括權限審批㈠㈡㈢㈣㈤㈥㈦,那么我們可以通過Drupal☾☽❄☃,只做一個統一的身份認證即可✵✶✷✸✹✺✻✼❄❅,用戶的系統跟現有的系統集成即可☧☬☸✡♁✙♆。,、':∶;。
比如跟圖書館用戶系統集成❣❦❧♡۵,用戶的CMP審批系統等♦☜☞☝✍☚☛☟✌✽✾✿❁❃,整體的架構就是上面的圖❣❦❧♡۵,舊圖新用 :)

更多的站群和SAAS介紹ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,請參考我們之前的文章: