Настройка WIF/WCF с помощью средства идентификации и доступа к Thinktecture.IdentityServer

Примечание: github repo был создан, чтобы продемонстрировать проблему, вызывающую эти вопросы.

При создании WIF-защищенного WCF-сервиса документация MSDN рекомендует использовать средство идентификации и доступа для визуальной студии. После запуска инструмента в проекте службы в web.config [commit 0472287 добавлен следующий node:

<ws2007FederationHttpBinding>
  <binding name="">
    <security mode="Message">
      <message>
        <issuerMetadata address="https://localhost/adfs/services/trust/mex" />
       </message>
     </security>
   </binding>
 </ws2007FederationHttpBinding>

Инструмент идентификации добавляет неверный адрес эмитентераMetadata и вообще не включает issure node. К счастью, все узлы, которые ссылаются на контрольные отпечатки, создаются правильно. Добавление ссылки службы в проект клиента для этой услуги приводит к неправильной настройке на клиенте. После изменения содержимого сообщения node следующим образом, создание служебной ссылки на службу оставляет почти полезный клиент (см. Второй вопрос) [commit 758052d].

      <message>
        <issuer address="https://localhost:44300/issue/wstrust/mixed/username" binding="ws2007HttpBinding" bindingConfiguration="" />
        <issuerMetadata address="https://localhost:44300/issue/wstrust/mex" />
      </message>

Первый вопрос Есть ли что-то, что я делаю неправильно в настройке средства идентификации, которое вызывает привязку, чтобы не было правильно настроено? Созданный адрес не существует в файле STS FederationMetadata.xml, поэтому я не уверен, откуда он.

После правильной настройки службы ссылка на обслуживание для клиента почти подключена и воспроизводится. По какой-то причине он не указывает конфигурацию привязки для эмитента в WS2007FederationHttpBinding. Добавление привязки и создание конфигурации привязки для клиента WIF для получения токена приведет к тому, что клиент окажется в рабочем состоянии [commit 39a4cbc].

Второй вопрос Обновление службы web.config позволяет автоматически генерировать остальную конфигурацию клиента. Я что-то упустил для того, чтобы клиент также смог настроить автоматическую привязку?

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

Примечание: github repo был создан, чтобы продемонстрировать проблему, вызывающую эти вопросы.

Ответы