亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

spring cloud admin開源項目ACE源碼閱讀-鑒權(quán)

buildupchao / 1508人閱讀

摘要:鑒權(quán)項目是一個比較完整的使用了框架的開源項目,可以用它來快速搭建分布式系統(tǒng)。本次著重看的部分是其服務(wù)以及用戶鑒權(quán)的部分。啟動項目依次啟動,,,即可。服務(wù)端則負責生成,驗證和更新。服務(wù)認證由處理。的鑒權(quán)也是通過的。

鑒權(quán)

ACE項目是一個比較完整的使用了spring cloud框架的開源項目,可以用它來快速搭建分布式系統(tǒng)。本次著重看的部分是其服務(wù)以及用戶鑒權(quán)的部分。ACE有一個鑒權(quán)服務(wù),負責微服務(wù)群的鑒權(quán)。啟動ACE項目依次啟動center,auth-server,admin,gateway即可。

模塊架構(gòu)

鑒權(quán)模塊分為服務(wù)端和客戶端(另有一個common模塊,可忽略,是一些鑒權(quán)模塊公用代碼的提?。?。應(yīng)用程序依賴客戶端,客戶端提供了兩個攔截器,工具類,并和服務(wù)端通信的feign。服務(wù)端則負責token生成,驗證和更新。

代碼分析 程序啟動

auth-server啟動時初始化KeyConfiguration,獲得userSecret和serviceSecret.并在啟動結(jié)束的鉤子類AuthServerRunner中,分別設(shè)置User和Server的pri/puk.User用于用戶認證,Server用于微服務(wù)認證。

admin和gateway在啟動的時候,會調(diào)用auth-client的自動配置,生成ServiceAuthConfig和UserAuthConfig的實例。同時auth-client的AuthClientRunner會請求pubkey到ServiceAuthConfig和UserAuthConfig的實例。同時在應(yīng)用各自的WebConfiguration中添加UserAuthRestInterceptor和ServiceAuthRestInterceptor攔截器

運行階段

用戶認證,由UserAuthRestInterceptor處理。
在用戶登錄的時候,調(diào)用jwtTokenUtil.generateToken生成token。這個token的生成規(guī)則稍后再論。在瀏覽器記錄一個Admin-Token.

--auth-server
public String login(JwtAuthenticationRequest authenticationRequest) throws Exception {
        UserInfo info = userService.validate(authenticationRequest);
        if (!StringUtils.isEmpty(info.getId())) {
            return jwtTokenUtil.generateToken(new JWTInfo(info.getUsername(), info.getId() + "", info.getName()));
        }
        throw new UserInvalidException("用戶不存在或賬戶密碼錯誤!");
}

登錄之后的請求都會經(jīng)過UserAuthRestInterceptor,在解析token的時候同時會進行過期,簽名合法等驗證。并把這些信息加到threadLocal中去。

--UserAuthRestInterceptor
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        ......
        IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(token);
        BaseContextHandler.setUsername(infoFromToken.getUniqueName());
        BaseContextHandler.setName(infoFromToken.getName());
        BaseContextHandler.setUserID(infoFromToken.getId());
        return super.preHandle(request, response, handler);
}
    
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        BaseContextHandler.remove();
        super.afterCompletion(request, response, handler, ex);
}

服務(wù)認證由ServiceAuthRestInterceptor處理。service的鑒權(quán)也是通過user的token。通過serviceAuthConfig.getTokenHeader()來解析service的信息。

--ServiceAuthRestInterceptor
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       ......
        String token = request.getHeader(serviceAuthConfig.getTokenHeader());
        IJWTInfo infoFromToken = serviceAuthUtil.getInfoFromToken(token);
        String uniqueName = infoFromToken.getUniqueName();
        for(String client:serviceAuthUtil.getAllowedClient()){
            if(client.equals(uniqueName)){
                return super.preHandle(request, response, handler);
            }
        }
        throw new ClientForbiddenException("Client is Forbidden!");
}
一些方法解讀(待補充)

jwtTokenUtil.generateToken:生成用戶token
userService.validate:驗證用戶的合法性
userAuthUtil.getInfoFromToken(token):從token中獲得用戶名稱和ID等信息。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/71736.html

相關(guān)文章

  • 分布式系統(tǒng)--感性認識JWT

    摘要:的安全性不好,攻擊者可以通過獲取本地進行欺騙或者利用進行攻擊。 好久沒寫博客了,因為最近公司要求我學spring cloud ,早點將以前軟件遷移到新的架構(gòu)上。所以我那個拼命的學吶,總是圖快,很多關(guān)鍵的筆記沒有做好記錄,現(xiàn)在又遺忘了很多關(guān)鍵的技術(shù)點,極其罪惡! 現(xiàn)在想一想,還是踏踏實實的走比較好。這不,今天我冒了個泡,來補一補前面我所學所忘的知識點。 想要解鎖更多新姿勢?請訪問我的博客...

    sherlock221 評論0 收藏0
  • 架構(gòu)~微服務(wù)

    摘要:接下來繼續(xù)介紹三種架構(gòu)模式,分別是查詢分離模式微服務(wù)模式多級緩存模式。分布式應(yīng)用程序可以基于實現(xiàn)諸如數(shù)據(jù)發(fā)布訂閱負載均衡命名服務(wù)分布式協(xié)調(diào)通知集群管理選舉分布式鎖和分布式隊列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最簡單的 SpringCloud 教程 | 第九篇: 服務(wù)鏈路追蹤 (Spring Cloud Sleuth) 史上最簡單的 S...

    xinhaip 評論0 收藏0
  • Spring Security

    摘要:框架具有輕便,開源的優(yōu)點,所以本譯見構(gòu)建用戶管理微服務(wù)五使用令牌和來實現(xiàn)身份驗證往期譯見系列文章在賬號分享中持續(xù)連載,敬請查看在往期譯見系列的文章中,我們已經(jīng)建立了業(yè)務(wù)邏輯數(shù)據(jù)訪問層和前端控制器但是忽略了對身份進行驗證。 重拾后端之Spring Boot(四):使用JWT和Spring Security保護REST API 重拾后端之Spring Boot(一):REST API的搭建...

    keelii 評論0 收藏0
  • Spring Web

    摘要:認證鑒權(quán)與權(quán)限控制在微服務(wù)架構(gòu)中的設(shè)計與實現(xiàn)一引言本文系認證鑒權(quán)與權(quán)限控制在微服務(wù)架構(gòu)中的設(shè)計與實現(xiàn)系列的第一篇,本系列預(yù)計四篇文章講解微服務(wù)下的認證鑒權(quán)與權(quán)限控制的實現(xiàn)。 java 開源項目收集 平時收藏的 java 項目和工具 某小公司RESTful、共用接口、前后端分離、接口約定的實踐 隨著互聯(lián)網(wǎng)高速發(fā)展,公司對項目開發(fā)周期不斷縮短,我們面對各種需求,使用原有對接方式,各端已經(jīng)很...

    Kosmos 評論0 收藏0
  • Spring Boot Admin 2.1.0 全攻略

    摘要:并向注冊中心注冊,注冊地址為,最后將的所有端口暴露出來,配置如下在工程的啟動類加上注解,開啟的功能,加上注解開啟的功能。在啟動類加上注解,開啟的功能。 轉(zhuǎn)載請標明出處: https://www.fangzhipeng.com本文出自方志朋的博客 Spring Boot Admin簡介 Spring Boot Admin是一個開源社區(qū)項目,用于管理和監(jiān)控SpringBoot應(yīng)用程序。 ...

    TalkingData 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<