一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|

服務器之家 - 編程語言 - JAVA教程 - HTTP基本認證(Basic Authentication)的JAVA實例代碼

HTTP基本認證(Basic Authentication)的JAVA實例代碼

2020-07-04 10:33jingxian JAVA教程

下面小編就為大家?guī)硪黄狧TTP基本認證(Basic Authentication)的JAVA實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

大家在登錄網(wǎng)站的時候,大部分時候是通過一個表單提交登錄信息。

但是有時候瀏覽器會彈出一個登錄驗證的對話框,如下圖,這就是使用HTTP基本認證。

HTTP基本認證(Basic Authentication)的JAVA實例代碼

下面來看看一看這個認證的工作過程:

第一步: 客戶端發(fā)送http request 給服務器,服務器驗證該用戶是否已經(jīng)登錄驗證過了,如果沒有的話,

服務器會返回一個401 Unauthozied給客戶端,并且在Response 的 header "WWW-Authenticate" 中添加信息。

如下圖。

HTTP基本認證(Basic Authentication)的JAVA實例代碼

HTTP基本認證(Basic Authentication)的JAVA實例代碼

第三步: 服務器將Authorization header中的用戶名密碼取出,進行驗證, 如果驗證通過,將根據(jù)請求,發(fā)送資源給客戶端。

下面來看一個JAVA的示例代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Decoder;
 
public class HTTPAuthServlet extends HttpServlet {
  
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String sessionAuth = (String) request.getSession().getAttribute("auth");
 
    if (sessionAuth != null) {
      System.out.println("this is next step");
      nextStep(request, response);
 
    } else {
 
      if(!checkHeaderAuth(request, response)){
        response.setStatus(401);
        response.setHeader("Cache-Control", "no-store");
        response.setDateHeader("Expires", 0);
        response.setHeader("WWW-authenticate", "Basic Realm="test"");
      }     
 
    }
 
  }
 
  private boolean checkHeaderAuth(HttpServletRequest request, HttpServletResponse response) throws IOException {
 
    String auth = request.getHeader("Authorization");
    System.out.println("auth encoded in base64 is " + getFromBASE64(auth));
    
    if ((auth != null) && (auth.length() > 6)) {
      auth = auth.substring(6, auth.length());
 
      String decodedAuth = getFromBASE64(auth);
      System.out.println("auth decoded from base64 is " + decodedAuth);
 
      request.getSession().setAttribute("auth", decodedAuth);
      return true;
    }else{
      return false;
    }
 
  }
 
  private String getFromBASE64(String s) {
    if (s == null)
      return null;
    BASE64Decoder decoder = new BASE64Decoder();
    try {
      byte[] b = decoder.decodeBuffer(s);
      return new String(b);
    } catch (Exception e) {
      return null;
    }
  }
 
  public void nextStep(HttpServletRequest request, HttpServletResponse response) throws IOException {
    PrintWriter pw = response.getWriter();
    pw.println("<html> next step, authentication is : " + request.getSession().getAttribute("auth") + "<br>");
    pw.println("<br></html>");
  }
 
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
    doGet(request, response);
  }
 
}

當request第一次到達服務器時,服務器沒有認證的信息,服務器會返回一個401 Unauthozied給客戶端。

認證之后將認證信息放在session,以后在session有效期內就不用再認證了。

以上就是小編為大家?guī)淼腍TTP基本認證(Basic Authentication)的JAVA實例代碼全部內容了,希望大家多多支持服務器之家~

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久re视频精品538在线 | 人成午夜免费大片在线观看 | 午夜国产 | 国产极品美女在线 | 性关系免费视频 | 狠狠撸在线播放 | v视界影院_vsjla| 大又大又黄又爽免费毛片 | 7777色鬼xxxx欧美色夫 | 99福利影院| 精品一区二区三区视频日产 | 成人在线免费观看视频 | 免费看隐私美女 | 欧亚精品一区二区三区 | 亚洲另类激情 | 美女用手扒开粉嫩的屁股 | 盲井在线| 日本不卡不码高清免费观看 | 日本免费一区二区三区四区五六区 | 美女脱了内裤让男生尿囗 | 四虎精品视频在线永久免费观看 | 精品国产影院 | 国产视频a区| 欧美一卡2卡3卡四卡海外精品 | 成人午夜爽爽爽免费视频 | 农夫69小说小雨与农村老太 | 亚洲精品视频久久 | ts人妖国产一区 | 天天综合五月天 | 草莓香蕉绿巨人丝瓜榴莲18 | 日本www视频在线观看 | 高清一级片 | 亚色九九九全国免费视频 | 九九国产在线视频 | 亚洲网色| 十大网站免费货源 | 男男同gayxxx | 97影院伦理 | 久久精品视频在线看 | 国产九九视频在线观看 | 日韩欧美一区二区三区免费观看 |