Настройка 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 был создан, чтобы продемонстрировать проблему, вызывающую эти вопросы.