Разница между аутентификацией клиентского (java автономного клиента) приложения и аутентификацией пользователя - PullRequest
0 голосов
/ 24 августа 2010

В случае веб-приложения я могу понять, что нет никакой разницы между аутентификацией клиента и аутентификацией пользователя;Игнорируя XSS и другие эксплойты, веб-клиент генерируется сервером / сервлетом.

Но предположим, что у вас есть клиентское приложение Java, взаимодействующее с приложением Java Server;С сервером связан сертификат, так что клиент может проверить и проверить, является ли сервер доверенным.Теперь у клиента также есть сертификат (client cert), чтобы сервер мог проверить, является ли это доверенным клиентом;Как только эта взаимная аутентификация выполнена, вместо того, чтобы предоставлять пользователю диалог с именем пользователя / паролем, сертификат пользователя (сертификат пользователя) может быть передан на сервер.

Вопрос в том, есть ли какое-либо преимущество / использование в этомслучай наличия (клиентского сертификата);Или одного сертификата пользователя будет достаточно, чтобы доверять и клиенту?

Я знаю, что это очевидный вопрос / но не может ли быть создано клиентское приложение румян ??Таким образом, клиент сертифицирует защиту от этого сценария.

Ответы [ 3 ]

1 голос
/ 24 августа 2010

Каждый раз, когда у вас есть клиент-серверное приложение, сервер должен предположить, что клиент скомпрометирован. Когда происходит аутентификация (имя пользователя / пароль, сертификат и т. Д. ... это не имеет значения), сервер должен предоставить пользователю определенные разрешения на использование функциональности сервера. При каждом обращении к серверу сервер должен проверить, есть ли у прошедшего проверку пользователя разрешение на выполнение этого действия.

Если вы доверяете клиенту только авторизованные запросы, вы подвергаетесь атакам. Если вы проверяете разрешения на сервере и очищаете входные данные, вам не нужно беспокоиться о том, использует ли пользователь доверенный клиент, потому что даже ненадежный клиент не сможет сделать больше, чем доверенный клиент с теми же учетными данными аутентификации. .

Эти принципы применяются независимо от того, используете ли вы веб-клиент или автономный клиент. Даже в веб-приложении я могу написать нового клиента и данные POST, использовать службы RESTful или вообще общаться с веб-сервером и полностью обойти веб-интерфейс, который вы мне предоставляете.

0 голосов
/ 24 августа 2010

Сертификат клиентского приложения (и его закрытый ключ) можно легко скопировать из приложения и создать мошенническое приложение. Способы противодействия этому: (а) использовать сертификат пользователя и позволить пользователю предоставлять его при необходимости и (б) использовать криптокен USB для хранения сертификата клиента и его закрытого ключа. Криптотокены не выпускают закрытые ключи, поэтому злоумышленник не может их скопировать (хотя он может использовать токен со своим приложением, если он имеет физический доступ к токену).

0 голосов
/ 24 августа 2010

Если какой-либо злоумышленник каким-либо образом изменяет клиентское приложение, он может использовать действительную сертификацию пользователя для доступа к серверу.

Сервер должен проверять клиентское приложение, а не ради сервера (мы предполагаем, чтосервер проверяет, может ли клиент выполнять ту или иную операцию, но для проверки того, что клиент не является фишингом фиктивного клиента).Затем сервер может объявить, что все операции, выполняемые клиентом-1, выполняются через какое-то проверенное клиентское приложение (агент), чтобы они действительно были предназначены пользователем.

...