gpt4 book ai didi

java - 我可以在使用 Java Socket 实现的网络服务器上使用任何身份验证机制吗?

转载 作者:行者123 更新时间:2023-12-01 05:45:32 25 4
gpt4 key购买 nike

我用Java ServerSocket和Socket实现了一个网络服务器。从 Web 浏览器获取/发送 http 请求/响应没有问题。但是,我想向服务器添加身份验证功能。我注意到有这样的类 java.net.Authenticator 或 java.net.PasswordAuthentication,但我不知道是否可以将它们应用到服务器。

如果您使用过 com.sun.httpserver.HttpServer,则 com.sun.httpserver.Authenticator 可以轻松支持其身份验证,可以通过 HttpContext.setAuthenticator() 方法进行设置。不幸的是,我们的项目中可能不允许使用 com.* 包。我只是想知道java标准包中是否有任何类可以让我做与com.sun.httpserver.Authenticator相同的事情?

我还可以通过强制客户端在http请求中提供用户和密码并在服务器中解析它们来实现这一点。但如果有任何方便的方法,我将非常感激。

谢谢。

最佳答案

我认为,你混淆了 network layers

com.sun.httpserver.HttpServer实现了HTTP协议(protocol),工作在应用层。 HTTP 定义 authentication mechanism ,因此 com.sun.httpserver.Authenticator 是 HTTP 标准中定义的身份验证机制的实现。

java.net.ServerSocket Socket工作在传输层,实现了TCP协议(protocol)。 TCP 没有定义身份验证服务。

当您的客户端-服务器通信使用 HTTP 时,您应该寻找 HTTP 服务器实现。恕我直言,基于 java.net.* 包重新实现 HTTP 服务器并不是一个好主意。

不幸的是,Java SE 不包含 HTTP 服务器 - com.sun.httpserver 不是标准的一部分 - 但有许多开源和可移植的实现。广泛使用的两个是TomcatJetty .

关于java - 我可以在使用 Java Socket 实现的网络服务器上使用任何身份验证机制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6042797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com