2010-04-27 3 views
0

Я занимаюсь разработкой REST API, который поддерживает два вида протоколов аутентификации:REST API непроверенные запросы исключение на основе User-Agent

  1. Войти Форма аутентификации - для клиентов на основе браузера.
  2. Простая базовая аутентификация - для не-браузерных клиентов.

Я разработал поток, в котором неавторизованные запросы перенаправляются на «форму входа», проблема в том, что это нежелательное поведение для клиентов, не относящихся к серверу!

Я решил решить это, решив в соответствии с «User-Agent», что делать: браузеры будут перенаправлены на «форму входа», а клиенты без браузера получат стандартную 401: базовую аутентификацию.

A. Что вы думаете об этом решении?
B. Есть ли стандартный способ в Java, чтобы проверить, пришел ли запрос от браузера, или мне нужно разработать этот механизм самостоятельно?

Заранее благодарен!

+0

Любопытно, почему у вас есть два разных механизма аутентификации? Обычная проверка подлинности работает в браузерах? –

+0

Не совсем: 1. Безопасность: браузер «запоминает» BA + в форме входа в систему, я могу перенаправить клиента на https. 2. User-expirience: Форма входа более точно сравнивается с BA. –

+0

Шей, вы создаете сеанс для клиентов браузера при успешной аутентификации? Если это так, я ожидаю, что это будет довольно запутанно иметь дело с взаимодействиями с состоянием (браузером) и безстоящим (без браузера) в одном и том же коде на стороне сервера. –

ответ

1

Поскольку вы имеете полный контроль над клиентом, у вас есть много других способов сделать это без проверки User-Agent,

  1. Используйте другой URL-адрес для регистрации клиента. Наш клиент не возвращает HTML, поэтому мы используем другую конечную точку.

  2. Передайте в URL особый параметр, такой как client_version.

  3. Если вы настаиваете на проверке пользовательского агента, используйте специальную строку, чтобы все остальное было браузером.

Смежные вопросы