Могу ли я использовать какой-либо механизм аутентификации на сетевом сервере, реализованный с помощью Java Socket? - PullRequest
1 голос
/ 18 мая 2011

Я реализовал сетевой сервер с Java ServerSocket и Socket.Нет проблем с получением / отправкой http-запросов / ответов из / в веб-браузеры.Тем не менее, я хочу добавить возможность аутентификации на сервере.Я заметил, что есть такой класс java.net.Authenticator или java.net.PasswordAuthentication, но я не знаю, смогу ли я применить их к серверу.

Если кто-либо из вас использовал com.sun.httpserver.HttpServer, его аутентификация легко поддерживается com.sun.httpserver.Authenticator, который можно установить с помощью метода HttpContext.setAuthenticator ().К сожалению, использование пакета com. * Может быть запрещено в нашем проекте.Я просто хочу знать, есть ли в стандартных пакетах java какой-либо класс, который может позволить мне сделать то же самое, что и com.sun.httpserver.Authenticator?

. Я также могу реализовать это, заставив клиента предоставить имя пользователя и пароль вhttp запросы и разбираем их на сервере.Но если есть какой-то удобный способ, я был бы очень благодарен.

Спасибо.

1 Ответ

0 голосов
/ 24 ноября 2012

Я думаю, вы путаете сетевые уровни .

com.sun.httpserver.HttpServer реализует протокол HTTP и работает на прикладном уровне. HTTP определяет механизм аутентификации , поэтому com.sun.httpserver.Authenticator является реализацией механизма аутентификации, определенного в стандарте HTTP .

java.net.ServerSocket и Socket работает на транспортном уровне и реализует протокол TCP. TCP не определяет службу аутентификации.

Когда ваше клиент-серверное соединение использует HTTP, вы должны искать реализацию HTTP-сервера. ИМХО не очень хорошая идея переопределить HTTP-сервер на основе пакета java.net. *.

К сожалению, Java SE не содержит HTTP-сервер -com.sun.httpserver не является частью стандарта-, но существует множество открытых и переносимых реализаций. Два широко используемых - Tomcat и Jetty .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...