У нас есть установка 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.......
.
Где я могу получить лучшее понимание того, как я должен бытьуправлять этим файлом для моих различных сред?У меня есть следующие среды, в которых размещаются эти сервисы, которые мы будем развертывать тем или иным способом:
- Отдельные рабочие станции разработчиков (в 3 раза больше, позже)
- Общая среда разработкидля людей, пишущих приложения для этих сервисов, но не обязательно изменяющих сервисы
- QA
- Staging
- 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>