Как сделать: WCF с Transport Security + Server Cert Auth. БЕЗ Клиента Сертификат? - PullRequest
0 голосов
/ 08 мая 2009

Правильно ли я понимаю, что Служба WCF может быть настроена с «Transport Security», + «Аутентификация сертификата» и без «Клиентский сертификат», установленный на стороне клиента? 1005 *

Мой сценарий будет:

  • Службы WCF на удаленном сервере
  • Клиент Windows Forms потенциально поставляется сотням пользователей (аутентифицирует пользователей (по отношению к БД) и выполняет действия с использованием методов службы WCF)

Я хочу, чтобы мои сообщения были зашифрованы по протоколу SSL, поэтому я выбрал метод «Транспорт» и считаю, что мне также необходим сертификат сервера.

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

PS. Потенциально из того, что я читаю здесь , я слишком усложняю свою задачу? Нужно ли просто установить SSL-сертификат на наш веб-сервер и просто получить доступ к службе WCF через HTTPS и, возможно, иметь возможность просто использовать basicHttpBinding? Фактически не нужно беспокоиться о механизмах «проверки подлинности сертификата»?

Ответы [ 2 ]

1 голос
/ 08 мая 2009

Как сказал Джошуа, вам не нужен сертификат клиента, если вы собираетесь использовать имя пользователя для аутентификации вашего клиента. В этом случае клиент передает имя пользователя и пароль, а сервер предоставляет сертификат для процесса взаимной аутентификации / рукопожатия.

Я только недавно настроил систему безопасности wcf для аналогичной системы (формы win через www) и использовал руководство из CodePlex , в котором предоставлен пошаговый контрольный список, чтобы убедиться, что у вас есть все на месте. Вам не нужно выполнять каждый шаг, например, мы не используем функциональность ролей, но мы используем магазин членства.

Ниже приведен краткий обзор настройки / конфигурации с помощью wsHttpBinding с использованием имени пользователя и сертификата сервера:

Конфиг клиента:

      <security mode="Message">
        <message clientCredentialType="UserName" negotiateServiceCredential="true"
          algorithmSuite="Default" establishSecurityContext="false" />
      </security>

Имя пользователя Пароль установлен на прокси:

'ClientCredentials added to service call for authentication
    objServiceClient.ClientCredentials.UserName.UserName = MyAppContext.Username
    objServiceClient.ClientCredentials.UserName.Password = MyAppContext.Password

Конфигурация сервера:

  • Переплет:

            <wsHttpBinding>
            <binding name="MyApp.wsHttpBindingMessageUname">
                <security mode="Message">
                    <message clientCredentialType="UserName" negotiateServiceCredential="true"
                      establishSecurityContext="false" />
                </security>
            </binding>
            </wsHttpBinding>
    
  • Поведение:

            <serviceBehaviors>
            <behavior name="MyApp.DefaultServiceBehavior">
                <serviceCredentials>
                    <serviceCertificate findValue="localhost" storeLocation="LocalMachine"
                     storeName="My" x509FindType="FindBySubjectName" />
                    <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
                     membershipProviderName="AspNetSqlMembershipProvider" />
                </serviceCredentials>
            </behavior>
        </serviceBehaviors>
    

Надеюсь, это поможет, если у вас есть вопросы, дайте мне знать.

1 голос
/ 08 мая 2009

Вам не нужен сертификат клиента, это просто ssl. Если вы используете IIS для размещения службы, это не сложно, просто установите сертификат. Безопасность на уровне сообщений становится немного сложнее, но с ssl-сертификатом у вас все должно быть в порядке.

Если вы используете basicHttpBinding, вам не нужно отключать аутентификацию, по умолчанию WSHttpBinding включает аутентификацию на уровне сообщений, которую вы можете отключить в веб-конфигурации, установив режим аутентификации (я полагаю) на none. Перейти с базовым, если вам просто нужен ssl. Если вы хотите использовать ssl и, возможно, аутентификацию Windows, используйте WSHttpBinding.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...