Нужна ли безопасность на транспортном уровне при использовании безопасности на уровне сообщений в WCF?

Я все еще пытаюсь лучше понять безопасность WCF.

Один вопрос, который я, кажется, не могу понять: если используется безопасность на уровне сообщений, тогда все сообщение может быть подписано / зашифровано. Если это так, имеет ли смысл использовать как безопасность на уровне сообщений, так и безопасность на транспортном уровне? Другими словами, если само сообщение защищено, зачем мне использовать что-то вроде HTTPS для безопасности транспорта?

Благодарю.

3 ответа

Решение

HTTPS (SSL, TLS) обеспечивают двухточечную безопасность. Я уже объяснил, что это значит в одном из моих предыдущих ответов.

Термин Безопасность в WCF имеет 4 компонента:

  • Аутентификация - учетные данные передаются на сервер для идентификации клиента
  • Авторизация - выборочно определить, какие операции могут быть выполнены аутентифицированным клиентом
  • Конфиденциальность - шифрование - только ожидаемый получатель может расшифровать сообщение и прочитать конфиденциальные данные
  • Целостность - подпись - ожидаемый получатель может проверить, что сообщение получено от заявленного клиента, и оно не было изменено во время передачи

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

Насколько я помню, при использовании NetMsmqBinding можно использовать только безопасность на транспортном уровне и уровне сообщений.

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

Важно использовать защиту на транспортном уровне, когда не используется шифрование на уровне сообщений. Фактически, WCF требует, чтобы вы использовали SSL, например, при использовании незашифрованного текста UsernameToken.

Другие вопросы по тегам