<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ***** # 1. 有狀態 VS 無狀態 ``` 1-1. 傳統架構(有狀態) 通常Sessinon Stroe可以是redis 或者 Memcached ``` ![](https://img.kancloud.cn/a8/6c/a86c18715e54ba9322ab8e92afc70bc6_807x471.png) ``` 1-2. 微服務架構(無狀態) 無狀態模式下服務器端只做解密和校驗,不做存儲;由客戶端(瀏覽器)做存儲 ``` ![](https://img.kancloud.cn/1d/bf/1dbf1a4c0a1daf266982a4c77e2e3b9e_726x435.png) ``` 1-3. 優缺點對比 ``` ![](https://img.kancloud.cn/91/2d/912d0856f2af30ca47740643a3e2310f_799x295.png) # 2. 微服務常用的安全登錄方案(認證/授權) ``` 2-1. "處處登錄"方案(OAth2.0) 參考: https://www.cnblogs.com/cjsblog/p/10548022.html OAth2.0系列文檔: http://ifeve.com/oauth2-tutorial-all/ Spring Cloud Security認證授權示例代碼: https://github.com/chengjiansheng/cjs-oauth2-sso-demo.git Keycloak認證授權示例代碼: https://www.github.com/eacdy/spring-cloud-yes.git ``` ``` 2-2. 微服務認證方案-[外部無狀態,內部有狀態方案] ``` ![](https://img.kancloud.cn/e6/26/e6269795aa91f48db9d69e5636e270aa_781x442.png) ``` 2-3. 微服務認證方案-“網關認證授權,內部裸奔”方案 缺點: 網關被攻破,不安全 ``` ![](https://img.kancloud.cn/67/a6/67a6af26890170f4a64208fdab2dc1cd_776x347.png) ``` 2-4. 微服務認證方案-“內部裸奔”改進方案 ``` ![](https://img.kancloud.cn/60/4d/604d90ea34742aaa6be5a795a1264b91_761x447.png) ``` 2-5. 微服務認證方案-方案對比與選擇 ``` ![](https://img.kancloud.cn/52/2d/522d23943790247fa51bb7e156625e5a_749x236.png) # 3. 訪問控制模型(授權) ``` 即滿足什么樣的條件,才允許訪問 ``` ![](https://img.kancloud.cn/08/69/0869d9f85d46186cf991a6cf4778ce55_527x338.png) ``` 實現RBAC模型,如下: 簡單的說,就是為用戶分配角色,用角色關聯權限 ``` ![](https://img.kancloud.cn/e1/3d/e13d3a785e7d44ff071c578615af4d1b_756x162.png) # 4. JWT是什么?【是什么、組成、上手】 ``` 1. JWT是什么? JWT(JSON Web Token) 是一個開放標準(RFC 7519),它定義了一種緊湊的、自包含的方式, 用于作為JSON對象在各方之間安全地傳輸信息.該信息可以被驗證和信任,因為它是數字簽名的. ``` ``` 2. JWT組成 Token=Base64(Header).Base64(Payload).Base64(Signature) 如: aaa.bbb.ccc Signature=Header指定的簽名算法(Base64(Header).Base64(Payload), 秘鑰), HS256("aaa.bbb",秘鑰) ``` ![](https://img.kancloud.cn/34/08/3408872fe46dc0e54cbb35580afab478_756x162.png) ``` 開發參考文檔: https://www.imooc.com/article/290892 ``` # 5. AOP實現登錄狀態檢查 ``` 1. 過濾器 2. 攔截器 3. Spring AOP ``` # 6. Feign實現Token傳遞 ``` 1. 單個方法傳遞在請求參數及調用Feign接口的參數傳遞 @RequestHeader("X-Token") 2. 統一處理: /** * feign中攔截器傳遞Token * @FeignClient(configuration = TokenRelayRequestIntecepor.class) */ public class TokenRelayRequestIntecepor implements RequestInterceptor { @Override public void apply(RequestTemplate template) { //1. 獲取到Token RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); ServletRequestAttributes attributes = (ServletRequestAttributes)requestAttributes; HttpServletRequest request = attributes.getRequest(); String token = request.getHeader("X-Token"); //2. Token傳遞 if(StringUtils.isNotBlank(token)) { template.header("X-Token", token); } } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看