Java用户名密码检查

3
有一个需要身份验证的特定服务器IP地址,我通常通过命令行访问“ftp x.y.z.0”,输入我的用户名和密码即可登录。我想让我的程序请求用户凭据,检查他们是否可以登录到这个服务器/IP地址,并且如果可以,只需返回true,否则返回false。我不是这个服务器的所有者,也不太了解它,我只需要知道我的应用程序的最终用户是否有访问权限。如果可能的话,我不想使用任何外部包,只使用标准Java库中提供的内容。感谢您的帮助。
我最近尝试的方法:
 URL url = new URL("ftp://1.0.0.0/");
 URLConnection uc = url.openConnection();
 String userpass = username + ":" + password;
 String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());
 uc.setRequestProperty ("Authorization", basicAuth);
 InputStream in = uc.getInputStream();

我不确定它具体在做什么,但无论我输入什么样的用户名和密码字符串,它似乎都会给出相同的响应。


1
我知道你提到了不想使用外部包,但是这里有一个类似的问题,使用了Apache commons-net库,可能会有用:https://dev59.com/N2vXa4cB1Zd3GeqPO_w9 - nerdherd
1
这是实现HTTP基本认证的方法,但您正在尝试连接到FTP服务器。 - entonio
1个回答

1

如果要通过尝试连接FTP服务器来检查登录状态,则需要使用套接字并进行大量FTP协议和身份验证等方面的解析。因此,我建议使用Commons Net,这也将允许您处理其他身份验证内容(例如HTTP / NNTP等)。


如果@Op仍然想手动完成它,那么他可以参考FTPClient的实现。 - prav
是的,他可以借用一些代码,但我想重新使用现有的东西会更容易。 - jdevelop
我在这个问题上进行的每一次搜索似乎都表明使用apache commons net包最容易。看起来我将不得不使用它,因为只需检查登录能力就可以简单得多。一旦连接到服务器,我实际上没有任何要做的事情,只是一个检查而已。感谢您的帮助,如果没有外部包,这似乎会过于繁琐并且浪费时间。 - sgr123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接