У меня есть ситуация, когда мне нужно аутентифицировать клиента через несколько веб-сервисов. По сути, каждая служба должна идентифицировать клиента и знать несколько других небольших данных о клиенте.
Способ, которым я теперь работаю, заключается в том, что необходимая идентифицирующая информация сохраняется в таблице сеансов в базе данных аутентификационным веб-сервером. Веб-сервер передает клиенту строку, которая идентифицирует запись базы данных и передается другим веб-службам. Затем веб-службы используют эту строку для извлечения необходимой информации о клиенте из записи базы данных.
Мне пришло в голову, что можно было бы предоставить клиенту зашифрованный большой двоичный объект, который содержит идентификатор пользователя и другую необходимую информацию, которая довольно мала, и избегать использования базы данных для этого полностью. Клиент просто передаст блоб (как строка в предыдущем абзаце), не узнавая, что он содержит, и только веб-службы будут знать, как его расшифровать.
Это должно устранить необходимость для базы данных хранить информацию о сеансе и сделать весь процесс немного проще. С базой данных вы должны заботиться об очистке старых сессий и тайм-аутов и т. Д.
Итак, мой вопрос: считается ли передача и передача конфиденциальных данных от сервиса к сервису через клиента безопасной и приемлемой? Возможно ли сделать это таким образом, чтобы исключить беспокойство клиента по поводу искажения данных? Какие алгоритмы шифрования было бы хорошо использовать? Я использую .Net - специальные классы были бы весьма полезны.