Служба WCF может похвастаться надежной системой безопасности с двумя режимами или уровнями безопасности, так что только предполагаемый клиент может получить доступ к службам. Угрозы безопасности, которые распространены в распределенной транзакции, в значительной степени смягчены WCF.
Ключевые функции безопасности
Служба WCF имеет четыре ключевых функции безопасности, как показано на рисунке ниже.
-
Аутентификация — здесь аутентификация не ограничивается идентификацией отправителя сообщения, а является взаимной, т. Е. Аутентификация получателя сообщения требуется для исключения возможности любого рода атак со стороны посредника.
-
Авторизация — это следующий шаг, предпринятый службой WCF для обеспечения безопасности, и здесь определяется, должна ли служба авторизовать вызывающую программу для продолжения или нет. Хотя авторизация не зависит от аутентификации, она обычно следует за аутентификацией.
-
Конфиденциальность — обмен информацией между вызывающим абонентом и службой является конфиденциальным, чтобы ограничить его толкование другими лицами, для которых сообщение не предназначено. Чтобы сделать это возможным, шифрование используется вместе с множеством других механизмов.
-
Целостность . Последняя ключевая концепция — сохранение целостности, т. Е. Предоставление гарантии того, что сообщение не было подделано кем-либо на пути от отправителя к получателю.
Аутентификация — здесь аутентификация не ограничивается идентификацией отправителя сообщения, а является взаимной, т. Е. Аутентификация получателя сообщения требуется для исключения возможности любого рода атак со стороны посредника.
Авторизация — это следующий шаг, предпринятый службой WCF для обеспечения безопасности, и здесь определяется, должна ли служба авторизовать вызывающую программу для продолжения или нет. Хотя авторизация не зависит от аутентификации, она обычно следует за аутентификацией.
Конфиденциальность — обмен информацией между вызывающим абонентом и службой является конфиденциальным, чтобы ограничить его толкование другими лицами, для которых сообщение не предназначено. Чтобы сделать это возможным, шифрование используется вместе с множеством других механизмов.
Целостность . Последняя ключевая концепция — сохранение целостности, т. Е. Предоставление гарантии того, что сообщение не было подделано кем-либо на пути от отправителя к получателю.
Режим безопасности передачи
WCF предлагает следующие режимы безопасности передачи, чтобы обеспечить защищенную связь между клиентом и сервером. Различные режимы безопасности передачи упомянуты ниже.
-
Нет. Этот режим не гарантирует никакой безопасности сообщений, и служба не получает учетные данные о клиенте. Этот режим очень рискованный, поскольку может допускать подделку сообщений и, следовательно, не рекомендуется.
Нет. Этот режим не гарантирует никакой безопасности сообщений, и служба не получает учетные данные о клиенте. Этот режим очень рискованный, поскольку может допускать подделку сообщений и, следовательно, не рекомендуется.
<wsHttpBinding> <binding name = "WCFSecurityExample"> <security mode = "None"/> </binding> </wsHttpBinding>
-
Транспорт. Этот режим является наиболее простым способом обеспечения безопасной передачи сообщений с использованием протоколов связи, таких как TCP, IPC, Https и MSMQ. Этот режим более эффективен, когда передача является двухточечной и используется в основном в контролируемой среде, то есть в приложениях интрасети.
Транспорт. Этот режим является наиболее простым способом обеспечения безопасной передачи сообщений с использованием протоколов связи, таких как TCP, IPC, Https и MSMQ. Этот режим более эффективен, когда передача является двухточечной и используется в основном в контролируемой среде, то есть в приложениях интрасети.
<wsHttpBinding> <binding name = "WCFSecurityExample"> <security mode = "Transport"/> </binding> </wsHttpBinding>
-
Сообщение — режим безопасности обеспечивает взаимную аутентификацию и в значительной степени обеспечивает конфиденциальность, поскольку сообщения зашифрованы и могут передаваться через http, который не считается безопасным протоколом. Здесь безопасность обеспечивается сквозной без учета того, сколько посредников вовлечено в передачу сообщения и есть ли защищенный транспорт или нет. Режим обычно используется интернет-приложениями.
Сообщение — режим безопасности обеспечивает взаимную аутентификацию и в значительной степени обеспечивает конфиденциальность, поскольку сообщения зашифрованы и могут передаваться через http, который не считается безопасным протоколом. Здесь безопасность обеспечивается сквозной без учета того, сколько посредников вовлечено в передачу сообщения и есть ли защищенный транспорт или нет. Режим обычно используется интернет-приложениями.
<wsHttpBinding> <binding name = "WCFSecurityExample"> <security mode = "Message"/> </binding> </wsHttpBinding>
-
Смешанный — этот режим безопасности используется не часто, и аутентификация клиента предлагается только на уровне клиента.
Смешанный — этот режим безопасности используется не часто, и аутентификация клиента предлагается только на уровне клиента.
<wsHttpBinding> <binding name = "WCFSecurityExample"> <security mode = "TransportWithMessageCredential"/> </binding> </wsHttpBinding>
-
И то и другое. Этот режим безопасности включает в себя как транспортную безопасность, так и безопасность сообщений, чтобы обеспечить надежную защиту, но часто приводит к перегрузке общей производительности. Этот поддерживается только MSMQ.
И то и другое. Этот режим безопасности включает в себя как транспортную безопасность, так и безопасность сообщений, чтобы обеспечить надежную защиту, но часто приводит к перегрузке общей производительности. Этот поддерживается только MSMQ.
<netMsmqBinding> <binding name = "WCFSecurityExample"> <security mode = "Both"/> </binding> </netMsmqBinding>
Все привязки WCF, кроме BasicHttpBinding, имеют некоторую степень безопасности передачи по умолчанию.
Уровень безопасности сообщений
Безопасность на уровне сообщений не зависит от протоколов WCF. Он используется с самими данными сообщения путем шифрования данных с использованием стандартного алгоритма. Ряд учетных данных клиента доступны для разных привязок для уровня безопасности сообщений, и они обсуждаются ниже.
Учетные данные клиента для безопасности на уровне сообщений в WCF
Нет — здесь для защиты сообщения используется шифрование, в то время как аутентификация клиента не выполняется, что означает, что сервис может быть доступен анонимному клиенту. За исключением BasicHttpBinding, все привязки WCF поддерживают эти учетные данные клиента. Однако следует отметить, что для NetNamedPipeBinding эти учетные данные клиента вообще не доступны.
-
Windows — здесь для пользователя, вошедшего в систему в режиме реального времени, используется шифрование сообщений и аутентификация клиента. В этом случае, в отличие от всех других привязок WCF, NetNamedPipeBinding недоступен, а BasicHttpBinding не поддерживает его.
-
Имя пользователя — здесь сообщения шифруются, а также защищаются, предлагая имя пользователя, и клиенты проходят проверку подлинности, поскольку они должны предложить пароль. BasicHttpBinding, как и два вышеуказанных учетных данных клиента, не поддерживает имя пользователя и недоступно для NetNamedPipeBinding.
-
Сертификат — наряду с шифрованием сообщений и клиент, и служба получают аутентификацию с помощью сертификата. Эти учетные данные клиента доступны и поддерживаются всеми привязками WCF, кроме NetNamedPipeBinding.
-
IssuedToken — выданные токены от таких авторитетов, как Cardspace, используются для аутентификации сообщений. Шифрование сообщений также выполняется здесь.
Windows — здесь для пользователя, вошедшего в систему в режиме реального времени, используется шифрование сообщений и аутентификация клиента. В этом случае, в отличие от всех других привязок WCF, NetNamedPipeBinding недоступен, а BasicHttpBinding не поддерживает его.
Имя пользователя — здесь сообщения шифруются, а также защищаются, предлагая имя пользователя, и клиенты проходят проверку подлинности, поскольку они должны предложить пароль. BasicHttpBinding, как и два вышеуказанных учетных данных клиента, не поддерживает имя пользователя и недоступно для NetNamedPipeBinding.
Сертификат — наряду с шифрованием сообщений и клиент, и служба получают аутентификацию с помощью сертификата. Эти учетные данные клиента доступны и поддерживаются всеми привязками WCF, кроме NetNamedPipeBinding.
IssuedToken — выданные токены от таких авторитетов, как Cardspace, используются для аутентификации сообщений. Шифрование сообщений также выполняется здесь.
В следующем коде показано, как настраиваются учетные данные клиента в уровне / режиме безопасности сообщений WCF.
<netTcpBinding> <binding name = "WCFMessageSecurityExample"> <security mode = "Message"> <message clientCredentialType = "None"/> </security> </binding> </netTcpBinding> <netMsmqBinding>...</netMsmqBinding> </bindings> <behaviors>...</behaviors>
Здесь следует отметить, что режим безопасности транспорта имеет преимущество над уровнем безопасности сообщений, поскольку первый режим быстрее. Он не требует никакого дополнительного кодирования и предлагает поддержку взаимодействия, и, следовательно, не снижает общую производительность.
Однако с точки зрения безопасности режим защиты сообщений является более надежным, независимым от протоколов и обеспечивает сквозную безопасность.