Как создать XML метаданных федерации для "Доверие проверяющей стороны" и "Доверие поставщика утверждений" для ADFS 2.0

Одно из наших веб-приложений хотело бы подключиться к серверу ADFS 2.0, чтобы получить токен учетных данных и проверить роли пользователей на основе этого. Администратор сервера ADFS попросил нас предоставить им XML-файл метаданных федерации, чтобы они могли создавать отношения доверия проверяющей стороны. Я гуглил и нашел только, как загрузить XML метаданных федерации сервера ADFS с помощью URL - https: // [имя сервера adfs ] /federationmetadata/2007-06/federationmetadata.xml Но не смог найти ни одного руководства по созданию XML метаданных федерации для создания " Доверие доверяющей стороны " и " Доверие провайдера претензий ". Есть ли инструменты для создания этих файлов метаданных? Пожалуйста, поделитесь идеей о том, как создать.

Спасибо

L u

Ответь на мой вопрос:

Я обнаружил, что утилиты Federation Utility в WindowsIdentityFoundation-SDK-4.0 по адресу http://www.microsoft.com/en-ca/download/details.aspx?id=4451 сделают это.

4 ответа

Решение

На самом деле URL

https://server/federationmetadata/2007-06/federationmetadata.xml

Там нет инструментов, которые я знаю.

Вы можете использовать класс http://msdn.microsoft.com/en-us/library/microsoft.identitymodel.protocols.wsfederation.metadata.aspx или ссылаться на динамическое создание метаданных федерации.

Взгляните на "Thinktecture.IdentityServer.v2 / src / Libraries / Thinktecture.IdentityServer.Protocols / FederationMetadata" на https://github.com/thinktecture/Thinktecture.IdentityServer.v2.

Или, если ваше приложение использует WIF, оно находится в каталоге метаданных.

Обновить:

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

Пример:

<?xml version="1.0" encoding="utf-8"?>
<EntityDescriptor ID="_5b6cd05c-a5e3-470d-a2fc-6c6f66633d1b" entityID="http://localhost/app/" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
    <RoleDescriptor xsi:type="fed:ApplicationServiceType" xmlns:fed="http://docs.oasis-open.org/wsfed/federation/200706" protocolSupportEnumeration="http://docs.oasis-open.org/wsfed/federation/200706" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <fed:ClaimTypesRequested>
            <auth:ClaimType Uri="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" Optional="true" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" />
            <auth:ClaimType Uri="http://schemas.microsoft.com/ws/2008/06/identity/claims/role" Optional="true" xmlns:auth="http://docs.oasis-open.org/wsfed/authorization/200706" />
        </fed:ClaimTypesRequested>
        <fed:TargetScopes>
            <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://localhost/app/</Address>
            </EndpointReference>
        </fed:TargetScopes>
        <fed:PassiveRequestorEndpoint>
            <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
                <Address>http://localhost/app/</Address>
            </EndpointReference>
        </fed:PassiveRequestorEndpoint>
    </RoleDescriptor>
</EntityDescriptor>

где localhost\app\ должен быть URL вашего приложения. Примечание конец косая черта!

Я должен был сделать это недавно, никогда раньше не использовал.Net или ADFS и имел только URL-адрес метаданных сервера (STS), с которым я пытался интегрироваться. У меня был базовый ПК с Windows 10, и я пытался настроить веб-приложение Node.js в качестве RP. Вот что я сделал:

  1. На ПК с Win 10, перейдите в Панель управления -> Программы и компоненты -> Включить или выключить функции Windows -> Включить Windows Identity Foundation 3.5

  2. Установленный Windows Identity Foundation SDK 4.0 (как указано первоначальным автором).

  3. Создал основной файл Web.config, который содержал:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.web>
    
      </system.web>
    </configuration>
    
  4. В каталоге установки SDK я нашел FedUtil.exe и FedUtilSampleUserInput.xml. Файл примера объяснил все параметры, которые собирался запросить FedUtil.exe, что было очень полезно.

  5. Запустил FedUtil.exe в качестве администратора (щелкните правой кнопкой мыши в проводнике), предоставив только что созданный файл Web.config, URL-адрес веб-приложения, URL-адрес метаданных сервера (STS) в качестве "существующего STS" и выбрав создание по умолчанию. сертификат.

  6. И вот, файл FederationMetadata.xml был создан, и мой файл Web.config обновился автоматически.

  7. Затем я откомментировал некоторые типы утверждений в обновленном файле Web.config и повторно запустил FedUtil.exe, который затем обновил мой FederationMetadata.xml дополнительными типами утверждений, которые мне были нужны из STS (например, электронная почта, имя и фамилия). фамилия)

  8. Предоставил FederationMetadata.xml администратору STS, который работал!

Единственным недостатком является то, что все это требует компьютера Windows... Я не уверен, что я сделал бы на Mac или Linux!

Для создания метаданных SAML RP на samltool.com доступен веб-инструмент, который может помочь. Я не нашел ни одного для WS-Federation, кроме утилиты Federation...

Я также недавно обнаружил сайт rcFederation, который поддерживает AD FS / WS-Federation

XML-метаданные для создания "Доверия к воспроизводящей стороне" - это не метаданные федерации ADFS, а XML-метаданные SP (издателя Saml).

Другие вопросы по тегам