2011-12-01 81 views
2

我正在使用證書進行客戶端身份驗證(在示例JSP應用程序中)。 我已經編寫了一個代碼來從客戶端證書中提取客戶端信息。現在我想使用證書的序列號來標識數據庫中的特定用途。從證書中提取信息

我提取使用的序列號 <%= cert.getSerialNumber%> 它給我一個輸出3.這是一個整數,或BigInteger的數組值?

有沒有什麼辦法可以聲明這是另一個整型變量,例如int a =(序列號值)?我沒有用jsp玩過太多,所以我不知道在我的jsp文件中有哪些代碼。

我真的很感激,如果有人可以幫助我。提前致謝。我附上我的代碼,從安裝的證書中提取序列號。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ page import="java.math.*" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Welcome</title> 
</head> 
<body> 
<center> <font color="red"> Welcome</font> </center> 
<% 
Object o = request.getAttribute("javax.servlet.request.X509Certificate"); 
if (o != null) { 
X509Certificate certs[] = (X509Certificate[]) o; 
X509Certificate cert = certs[0]; 
%> 
<%= cert.getSerialNumber() %>    
<% 
} 
else { 
%> 
You are not Authorized! 
Your certificate cannot be found! 
<% 
} 
%> 
<br><br> 
<form method = "post" action = "page2.jsp"> 
<input type = submit value = "click me"> 
</form> 
</body> 
</html> 

回答

0

getSerialNumber()方法返回一個BigInteger對象,根據X509Certificate API。如果你想這個值賦值給一個變量,你可以簡單地做:

BigInteger serialNumber = cert.getSerialNumber(); 

在一個側面說明,這真的沒有任何與JSP的知識,這是核心的Java。

+0

非常感謝您的幫助。它像一個魅力。 –