前言
關(guān)于 OAuth2.0的認(rèn)證體系,翻閱了好多資料,RCF 文檔太多,看了一半就看不下去了,畢竟全英文的文檔看起來,是有一點(diǎn)讓我煩躁,但也對(duì) OAuth2.0的認(rèn)證流程有了一個(gè)基本的概念,之前用 SpringSecurity 做了一個(gè)基于 RBAC 的權(quán)限管理系統(tǒng)的基礎(chǔ)配置,所以對(duì) SpringSecurity 算是比較了解了,于是 OAuth2.0的實(shí)現(xiàn),也想用 SpringSecurity 的來做,心想應(yīng)該比較簡單,然而...事實(shí)上,我反反復(fù)復(fù),拿起又放棄,放棄又拿起,來來回回折騰了3個(gè)多月,才真正的掌握了這個(gè) OAuth2.0插件(OAuth2.0不是一個(gè)獨(dú)立的框架,只是 SpringSecurity 的一個(gè)插件而已)。
官網(wǎng)的 Demo 配置,是基于 JavaConfig 的配置方式,以前都用 XML 的,沒接觸過 JavaConfig,所以又繞了一圈,把 JavaConfig 方式的所有框架(Spring、SpringMVC、Mybatis、SpringSecurity、Web.xml)基本配置方式都走了一圈, 確實(shí),全代碼配置是很酷,很清爽,說實(shí)話,今后我也會(huì)逐漸往這方面走,因?yàn)檫@個(gè)方式比較有代碼感,哈哈,但是現(xiàn)在還不行,因?yàn)橛泻芏嗖寮 ⑻厥獾呐渲梅绞桨?,我都還不清楚要怎么配置,處于安全考慮,還是老老實(shí)實(shí)的用 XML 的比較好。
項(xiàng)目的說明
網(wǎng)上有很多,SpringSecurityOAuth2.0的配置文章,但是每個(gè)文章,都是將認(rèn)證服務(wù)器和資源服務(wù)器寫在一起的,并沒有將認(rèn)證與資源分離,也沒有講不同的資源之間如何拆分,然而我們在設(shè)計(jì)分布式系統(tǒng)的時(shí)候,總會(huì)以模塊化的方式,將不同的資源寫成不同的項(xiàng)目,比如,將網(wǎng)站的一個(gè)電商系統(tǒng),專門寫成一個(gè)項(xiàng)目,把網(wǎng)站中的論壇系統(tǒng),寫成另一個(gè)項(xiàng)目,部署的時(shí)候,每個(gè)項(xiàng)目就可以單獨(dú)部署,后端系統(tǒng)均以 RESTFull 的方式開放數(shù)據(jù)接口(RESTFull就是推薦使用 OAuth2.0的方式進(jìn)行認(rèn)證管理)。這樣的方式來設(shè)計(jì)程序,最大的優(yōu)點(diǎn)就是模塊之間相互獨(dú)立,互不干涉,在開發(fā)工作當(dāng)中,可以并行開發(fā),單獨(dú)維護(hù),同時(shí)模塊分離出來,今后還可以進(jìn)行很便利的集群,而不需要修改任何原來的代碼,所以對(duì)整個(gè)項(xiàng)目的擴(kuò)展性是非常好的,不同的項(xiàng)目之間,可以簡單的使用 HttpClient 進(jìn)行通訊,OAuth2.0五種授權(quán)模式當(dāng)中,有一種授權(quán)模式就是為這種資源服務(wù)器之間的通訊而設(shè)計(jì)的。