Я пытаюсь понять, как аутентификация/шифрование Windows работает с NetTcpBinding в WCF. Мне нужно точно знать, какой алгоритм шифрования используется для шифрования данных, передаваемых по сети (и некоторую документацию, подтверждающую это). Будет ли работать проверка подлинности/шифрование Windows, если клиент и/или хост не находятся в домене?
Аутентификация/шифрование Windows в WCF с NetTcpBinding
Ответы (2)
Привязка netTcpBinding с использованием учетных данных Windows требует, чтобы вызывающая сторона и служба находились в одном домене или, по крайней мере, во взаимно доверяющих доменах. В противном случае сервер не сможет проверить учетные данные Windows и отклонит вызов службы.
Что касается шифрования: вы даже можете выбирать, какое хотите! :-) TripleDES, AES - что угодно, тоже с разной длиной ключа.
См. статью Основы безопасности WCF — в ней рассказывается обо всех аспектах. безопасности и шифрования; также см. документацию MSDN по Securing Services, в которой содержится более подробная информация; здесь можно найти хороший обзор, показывающий свойства элемента безопасности транспорта basicHttp.
В прошлом году мне пришлось реализовать распределенную систему с использованием wcf, для чего требовался безопасный и производительный механизм на всех уровнях системы. Мы решили создать собственную архитектуру безопасности, создав двоичный зашифрованный токен. Зашифрованный токен содержал все разрешения, которые имел данный пользователь.
Так, например, пользователь войдет в систему и в случае успешной аутентификации получит обратно зашифрованный токен. Этот токен хранился локально в веб-клиенте. Все дальнейшие запросы пользователя будут содержать этот токен. Токен использовался на нескольких уровнях архитектуры. Веб-сервер будет использовать его, чтобы решить, какие визуальные элементы включить или отключить. Поскольку сервисный уровень был открыт для Интернета, каждая открытая дверь проверяла токен на предмет аутентификации и проверяла, имеет ли этот токен надлежащее разрешение для выполнения данной задачи. Бизнес-уровень может снова проверить более конкретное право, включенное в токен.
Преимущества:
- Не имело значения, использовали ли мы NetTcpBinding или любой другой тип привязки (и мы действительно использовали более одного типа привязки).
- Мы сэкономили много обращений к базе данных туда и обратно
- Мы могли бы использовать один и тот же токен на разных платформах
Я знаю, что это, вероятно, не ответит на ваши конкретные вопросы, но, возможно, даст вам пищу для размышлений, пока вы все еще выбираете внутриуровневую архитектуру своей системы.