Как мне изменить файл FederationMetadata.xml моего WCF для различных развертываний? - PullRequest
6 голосов
/ 04 октября 2011

У нас есть установка ADFS 2.0, которая хорошо работает для наших приложений MVC в различных средах.Я считаю, что он использует «пассивную аутентификацию» (я все еще привыкаю к ​​правильной терминологии) - именно там он перенаправляет пользователя на наш прокси-сервер adfs, если пользователь не вошел в систему, и adfs перенаправляет пользователя обратно в наше приложение MVCкак только они вошли в систему.

Сейчас мы начинаем предоставлять некоторые защищенные веб-сервисы и хотим подключиться к той же самой системе аутентификации.Насколько я понимаю, я хочу использовать ws2007FederationHttpBinding в качестве привязки для этого.Я считаю, что мой WCF web.config полностью настроен для этого, но моя борьба теперь сосредоточена вокруг файла FederationMetadata.xml.

Глядя на этот файл, я вижу некоторые вещи, которые, очевидно, необходимо изменить, такие как entityID="http://localhost/UserServices" и сертификат.Тогда есть некоторые вещи, которые я понятия не имею, что они есть, и если они должны измениться или нет, такие как EntityDescriptor ID="_2b510fe8-98b8...... и <ds:SignatureValue>CZe5mEu19/bDNoZrY8f6C559CJ........

Где я могу получить лучшее понимание того, как я должен бытьуправлять этим файлом для моих различных сред?У меня есть следующие среды, в которых размещаются эти сервисы, которые мы будем развертывать тем или иным способом:

  1. Отдельные рабочие станции разработчиков (в 3 раза больше, позже)
  2. Общая среда разработкидля людей, пишущих приложения для этих сервисов, но не обязательно изменяющих сервисы
  3. QA
  4. Staging
  5. Production (3 различных среды с разными сертификатами / доменами / и т. д.)

Таким образом, у нас есть довольно упрощенный процесс управления файлами web.config в различных средах с использованием преобразований и поиска / замены определенных токенов, поэтому я хотел бы сделать то же самое с этим файлом XML,В конечном счете, все, что мне нужно, это некоторое понимание того, какие изменения необходимы при управлении этим файлом FederationMetadata.xml для моих различных сред.

Мой текущий файл FederationMetadata.base.xml находится ниже, и я ВЕРИТЬ, что этоо праве (мне просто нужны имена / роли), и мне просто нужно разумно заменить различные токены, такие как ~RootServiceUrlTokenToReplace~, здесь:

<?xml version="1.0" encoding="utf-8"?>
<EntityDescriptor ID="~EntityDescriptorIdTokenToReplace~" entityID="http://~RootServiceUrlTokenToReplace~" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
      <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
      <ds:Reference URI="#~ReferenceURITokenToReplace~">
        <ds:Transforms>
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
        <ds:DigestValue>~DigestValueTokenToReplace~</ds:DigestValue>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>~SignatureValueTokenToReplace~</ds:SignatureValue>
    <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
      <X509Data>
        <X509Certificate>~CertificateTokenToReplace~</X509Certificate>
      </X509Data>
    </KeyInfo>
  </ds:Signature>
  <RoleDescriptor xsi:type="fed:ApplicationServiceType" protocolSupportEnumeration="http://schemas.xmlsoap.org/ws/2005/02/trust http://docs.oasis-open.org/ws-sx/ws-trust/200512" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fed="http://docs.oasis-open.org/wsfed/federation/200706">
    <KeyDescriptor use="encryption">
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <X509Data>
          <X509Certificate>~CertificateTokenToReplace~</X509Certificate>
        </X509Data>
      </KeyInfo>
    </KeyDescriptor>
    <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://~RootServiceUrlTokenToReplace~</Address>
      </EndpointReference>
    </fed:TargetScopes>
    <fed:ApplicationServiceEndpoint>
      <EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
        <Address>http://~RootServiceUrlTokenToReplace~</Address>
      </EndpointReference>
    </fed:ApplicationServiceEndpoint>
  </RoleDescriptor>
</EntityDescriptor>

Ответы [ 2 ]

1 голос
/ 06 октября 2011

WIF-приложение FederationMetadata.xml не связано с веб-службами на основе утверждений, которые оно предлагает.

(URL-адрес, указывающий на) FederationMetadata.xml используется AD FS для автоматического обновления информациидля использования в Доверие доверяющей стороны.Например, AD FS может регулярно запрашивать этот URL-адрес и соответствующим образом обновлять информацию о доверии проверяющей стороне.

Информация о веб-службе (на основе утверждений или иным образом), то есть ее метаданных, публикуется в виде документа WSDL,В службе на основе WCF это URL, который часто выглядит следующим образом: http://myhost.example.com/appName/serviceName.svc?wsdl. Этот документ WSDL часто не существует как физический файл, но автоматически создается WCF.

0 голосов
/ 08 октября 2011

Я нашел частичный ответ на мой вопрос в этом сообщении в блоге . Я изучаю это больше, чтобы выяснить, отвечает ли это на все мои вопросы. Я только что нашел это. Очевидно, мне нужно изменить свой EntityID (который содержит URL-адрес), поскольку я повторно внедряю его в другие среды, но SignatureValue содержит хэш этого URL-адреса (среди прочего?), Поэтому, изменяя URL-адрес, я лишаю законной силы SignatureValue, и он должен быть восстановленным. Очевидно, Генератор метаданных федерации может помочь мне в этом.

...