2011-12-01 80 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

非常感谢您的帮助。它像一个魅力。 –