好的,我已经有大部分材料了,但是似乎无法正确地将它们组合起来。我基本上正在尝试使用简单的身份验证过程(可能带有GUI)来保护数据库数据,以确保查看数据的是正确的人。目前,我正在使用UnboundID来处理实际的身份验证,尽管我可以尝试使用其他方法,例如JAAS。下面是我为此编写的方法(bypass仅用于测试):
public static boolean authenticate(String username, String password) {
if (username == null || password == null) {
return false;
}
if (username.equals("bypass") && password.equals("bypass")) {
return true;
}
try {
LDAPConnection conn = new LDAPConnection(AUTH_URL,AUTH_PORT);
BindRequest request = new SimpleBindRequest(username,password);
BindResult result = conn.bind(request);
return result.getResultCode().equals(ResultCode.SUCCESS);
} catch (LDAPException ex) {
ex.printStackTrace();
return false;
}
}
这段代码很明显很危险,因为密码以明文方式输入。我做了一些调查并发现应该在实际请求时使用类似SSL的东西来保护密码。这引发了另一个问题:如果我通过SSL发送请求,那么在发送请求之前我不仍然需要以明文形式提供密码吗?这不是很危险吗?我很惊讶像密码认证这样的事情不是通过简单的API完成的,因为很多应用都需要安全性。我很新手,希望能得到一些指导。谢谢!