Как правильно реализовать аутентификацию по сертификату клиента?

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

Я надеюсь получить ответы от сообщества. Обратная связь по любому предположению или вопросу крайне приветствуется.

Для справки: чтобы действительно принять один ответ, я должен разделить этот пост на несколько вопросов, но это приведет к еще большей путанице. Я почти уверен, что есть некоторые настоящие эксперты WCF, которые могут ответить на несколько вопросов в этом документе одновременно, поэтому я могу принять один ответ как реальную сделку для правильной настройки аутентификации clientcertificate с использованием IIS.

Позвольте мне набросать ситуацию и запрос партнера:

1: Требование партнера и вопрос об использовании сертификата клиента.

Партнер X должен вызвать API на моем бэкэнде, и у него есть четкое требование использовать аутентификацию Clientcertificate. Они создали сертификат клиента и предоставили нам сертификат только с открытым ключом, так как кажется логичным, что личный ключ остается на самом деле закрытым и в их собственных системах. Сертификат был импортирован на локальную учетную запись компьютера, и, глядя на путь сертификации, он действителен. Все промежуточные центры сертификации и, в конце концов, корневой центр сертификации являются доверенными.

2: Наш WCFсерверной конфигурация

У меня есть serviceBehavior, настроенный так:


    
        
        
        
          
        
    

Я думаю, что я сделал первую ошибку здесь и должен использовать ChainTrust для фактической проверки сертификата, используя его путь сертификации, Как вы думаете?

Сервис настроен так:


    

Привязка выглядит так:

Это базовая HttpBinding для форсирования SOAP1.1 (по словам партнераспецификации).


  
    
  

3: размещение службы WCF в IIS и конфигурации IIS

Мы размещаем наши службы WCF в IIS7. Мы настроили папку, в которой находятся сервисы, для использования SSL и принятия клиентских сертификатов. Аутентификация по анонимной аутентификации включена.

Дело в том, что общение с партнером работает, и мы были уверены, что все в порядке, но переключили настройку IIS натребуют» Сертификат клиента показывает нам, что внезапно уже невозможно успешно позвонить в наш сервис.

Правильно ли я предположить, что следующие вещи сделаны неправильно:

Служба Certicate в службе Beavior не является действительно необходимой. Это настройка, используемая клиентом. Или необходимо предоставить эту информацию сертификата для конечной точки службы, чтобы она соответствовала сертификату, который:отправляется клиентом?

Чтобы аутентификация сертификата клиента действительно работала в IIS, сертификат должен быть сопоставлен с пользователем. Этому пользователю должны быть предоставлены разрешения для папки, содержащей сервисы, и все механизмы аутентификации (анонимный, windows, ...) должны быть отключены. Таким образом, IIS будет обрабатывать фактическое рукопожатие и проверять связь службы. Или это скорее вопрос дополнительной защиты при сопоставлении сертификата с пользователем?

Установив 'Принять» в IIS мы обходим фактическую проверку сертификата между клиентом и сервером.

Все механизмы аутентификации, такие каканонимный а также 'окна должны быть отключены на IIS для папки, которая содержит службы.

Ответы на вопрос(1)

Ваш ответ на вопрос