激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

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

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

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

下面小編就為大家帶來一篇HTTP基本認證(Basic Authentication)的JAVA實例代碼。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

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

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

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

如下圖。

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

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

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

下面來看一個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有效期內就不用再認證了。

以上就是小編為大家帶來的HTTP基本認證(Basic Authentication)的JAVA實例代碼全部內容了,希望大家多多支持服務器之家~

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一级毛片在线看 | 日本欧美一区 | 欧美国产成人在线 | 国产午夜精品久久久久久久蜜臀 | 欧美视频在线一区二区三区 | 中文字幕激情视频 | www久久综合 | 欧日韩在线视频 | 久久最新免费视频 | 国产免费v片 | 91九色网址 | 国产羞羞视频在线免费观看 | 中文字幕精品在线播放 | 91午夜在线观看 | 日韩精品久久久久久久九岛 | 国产91对白叫床清晰播放 | 1314成人网| 精品亚洲综合 | 欧美成人精品不卡视频在线观看 | 91短视频在线| 国产乱xxxx | 久久精品亚洲一区二区三区观看模式 | 日本一区二区高清不卡 | 亚洲成人在线免费观看 | 日本在线播放一区二区 | 逼特逼视频在线观看 | 久久亚洲线观看视频 | 亚洲99影视一区二区三区 | av国产片| 精品国产一区二区三区四区在线 | 国产视频在线观看免费 | 91精品国产777在线观看 | aa国产视频一区二区 | 免费a级黄色片 | 国产精品爱久久久久久久 | 国产精品自拍片 | 91免费官网 | 想要xx在线观看 | 亚洲国产精品久久久久制服红楼梦 | av在线高清观看 | 久久精品2019中文字幕 |