Как реализовать аутентификацию клиента с помощью ServiceStack.Net - PullRequest
3 голосов
/ 10 октября 2011

Я занимаюсь разработкой веб-сервисов с использованием библиотеки servicestack.net.

В моем случае веб-службы будут вызываться из приложения WPF.Мне нужна возможность проверки подлинности того, что мой сервис вызывает только утвержденное клиентское приложение.

Это так же просто, как жесткое кодирование «имени пользователя» и «пароля» в клиентском приложении?Это, конечно, не похоже на правильный подход.Есть ли лучший способ?

РЕДАКТИРОВАТЬ Кроме того, на стороне клиента пользователи сами смогут войти в систему с именем пользователя / паролем и инициировать запросы к службе (не уверен, чтовлияет на что угодно, поэтому я подумал, что упомяну это),

1 Ответ

5 голосов
/ 11 октября 2011

Дополнительные сведения об аутентификации в ServiceStack см. В этом вопросе .

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

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

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

...