spring security OAuth2.0是對(duì)OAuth2.0的一種實(shí)現(xiàn),并且跟spring security相輔相成,與spring cloud體系的集成也非常便利,可以用它來(lái)實(shí)現(xiàn)分布式認(rèn)證授權(quán)。
OAuth2.0的服務(wù)提供方包含兩個(gè)服務(wù):即授權(quán)服務(wù) (Authorization Server,也叫認(rèn)證服務(wù)) 和資源服務(wù) (Resource Server)。使用 spring security OAuth2.0的時(shí)候可以選擇把它們放在同一個(gè)應(yīng)用程序中實(shí)現(xiàn),也可以選擇建立使用 同一個(gè)授權(quán)服務(wù)和 多個(gè)資源服務(wù)。
授權(quán)服務(wù):
應(yīng)包含 對(duì)接入端以及登入用戶 的合法性進(jìn)行驗(yàn)證并頒發(fā)token等功能,對(duì)令牌的請(qǐng)求端點(diǎn)由 Spring MVC 控制器進(jìn)行實(shí)現(xiàn)。
下面是配置一個(gè)認(rèn)證服務(wù)必須要實(shí)現(xiàn)的endpoints:
AuthorizationEndpoint 用于認(rèn)證請(qǐng)求。默認(rèn) URL:/oauth/authorize 。
TokenEndpoint 用于訪問(wèn)令牌的請(qǐng)求。默認(rèn) URL: /oauth/token 。
資源服務(wù):
應(yīng)包含 對(duì)資源的保護(hù)功能,對(duì)非法請(qǐng)求進(jìn)行攔截,對(duì)請(qǐng)求中token進(jìn)行解析鑒權(quán)等。
下面的過(guò)濾器用于實(shí)現(xiàn) OAuth 2.0 資源服務(wù):
OAuth2AuthenticationProcessingFilter 用于對(duì)請(qǐng)求給出的身份令牌解析鑒權(quán)。
基于以上信息,初步給出實(shí)現(xiàn)流程:
創(chuàng)建uaa授權(quán)服務(wù)(也可叫認(rèn)證服務(wù))和order訂單資源服務(wù)
認(rèn)證流程如下:
1、客戶端請(qǐng)求UAA授權(quán)服務(wù)進(jìn)行認(rèn)證。
2、認(rèn)證通過(guò)后由UAA頒發(fā)令牌。
3、客戶端攜帶令牌Token請(qǐng)求資源服務(wù)。
4、資源服務(wù)校驗(yàn)令牌的合法性,合法即返回資源信息。