<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>

                ![](https://cdn.zimug.com/wx-zimug.png) [TOC] ## 一、HttpBasic模式的應用場景 HttpBasic登錄驗證模式是Spring Security實現登錄驗證最簡單的一種方式,也可以說是最簡陋的一種方式。它的目的并不是保障登錄驗證的絕對安全,而是提供一種“防君子不防小人”的登錄驗證。 就好像是我小時候寫日記,都買一個帶小鎖頭的日記本,實際上這個小鎖頭有什么用呢?如果真正想看的人用一根釘子都能撬開。它的作用就是:某天你的父母想偷看你的日記,拿出來一看還帶把鎖,那就算了吧,怪麻煩的。 舉一個我使用HttpBasic模式的進行登錄驗證的例子:我曾經在一個公司擔任部門經理期間,開發了一套用于統計效率、分享知識、生成代碼、導出報表的Http接口。純粹是為了工作中提高效率,同時我又有一點點小私心,畢竟各部之間是有競爭的,所以我給這套接口加上了HttpBasic驗證。公司里隨便一個技術人員,最多只要給上一兩個小時,就可以把這個驗證破解了。說白了,這個工具的數據不那么重要,加一道鎖的目的就是不讓它成為公開數據。如果有心人破解了,真想看看這里面的數據,其實也無妨。這就是HttpBasic模式的典型應用場景。 ## 二、spring boot2.0整合Spring security spring boot 2,x版本maven方式引入Spring security坐標。 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` ## 三、HttpBasic登錄認證模式 **如果使用的Spring Boot版本為1.X版本,依賴的Security 4.X版本,那么就無需任何配置,啟動項目訪問則會彈出默認的httpbasic認證.** 我們現在使用的是spring boot2.0版本(依賴Security 5.X版本),HttpBasic不再是默認的驗證模式,在spring security 5.x默認的驗證模式已經是表單模式。所以我們要使用Basic模式,需要自己調整一下。并且`security.basic.enabled`已經過時了,所以我們需要自己去編碼實現。 ``` @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.httpBasic()//開啟httpbasic認證 .and() .authorizeRequests() .anyRequest() .authenticated();//所有請求都需要登錄認證才能訪問 } } ``` 啟動項目,在項目后臺有這樣的一串日志打印,冒號后面的就是默認密碼。 ``` Using generated security password: 0cc59a43-c2e7-4c21-a38c-0df8d1a6d624 ``` 我們可以通過瀏覽器進行登錄驗證,默認的用戶名是user.(下面的登錄框不是我們開發的,是HttpBasic模式自帶的) ![](https://img.kancloud.cn/e0/a3/e0a3af72e39c9b00956162042baa40a6_677x289.png) 當然我們也可以通過application.yml指定配置用戶名密碼 ``` spring: security: user: name: admin password: admin ``` ## 四、HttpBasic模式的原理說明 ![](https://img.kancloud.cn/2f/3f/2f3f6ce8187c028325ce039376f82ab8_1208x600.png) * 首先,HttpBasic模式要求傳輸的用戶名密碼使用Base64模式進行加密。如果用戶名是?`"admin"`??,密碼是“ admin”,則將字符串`"admin:admin"?`使用Base64編碼算法加密。加密結果可能是:YWtaW46YWRtaW4=。 * 然后,在Http請求中使用Authorization作為一個Header,“Basic YWtaW46YWRtaW4=“作為Header的值,發送給服務端。(注意這里使用Basic+空格+加密串) * 服務器在收到這樣的請求時,到達BasicAuthenticationFilter過濾器,將提取“ Authorization”的Header值,并使用用于驗證用戶身份的相同算法Base64進行解碼。 * 解碼結果與登錄驗證的用戶名密碼匹配,匹配成功則可以繼續過濾器后續的訪問。 所以,HttpBasic模式真的是非常簡單又簡陋的驗證模式,Base64的加密算法是可逆的,你知道上面的原理,分分鐘就破解掉。我們完全可以使用PostMan工具,發送Http請求進行登錄驗證。 ![](https://img.kancloud.cn/da/08/da084d876b470b54865efc06d03463ca_686x186.png)
                  <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>

                              哎呀哎呀视频在线观看