У нас есть установка ADFS 2.0, которая хорошо работает для наших приложений MVC в различных средах. Я полагаю, что она использует "пассивную аутентификацию" (я все еще привыкаю к правильной терминологии) - это определенно то, где она перенаправляет пользователя на наш прокси adfs, если пользователь не вошел в систему, а adfs перенаправляет пользователя обратно в наше приложение MVC, как только он вошел.
Сейчас мы начинаем открывать некоторые защищенные веб-сервисы и хотим использовать эту же систему аутентификации. Насколько я понимаю, я хочу использовать ws2007FederationHttpBinding
в качестве привязки для этого. Я полагаю, что у меня есть мой WCF's web.config все настроенные для этого, но моя борьба теперь сосредоточена вокруг FederationMetadata.xml
файла.
Глядя на этот файл, я вижу некоторые вещи, которые явно нужно изменить, такие как entityID="http://localhost/UserServices"
и сертификат. Затем есть некоторые вещи, о которых я понятия не имею, что это такое и нужно ли их менять или нет, например EntityDescriptor ID="_2b510fe8-98b8......
and
.
Где я могу получить лучшее понимание того, как я должен управлять этим файлом для моих различных сред? У меня есть следующие среды, в которых размещены эти службы, которые мы будем развертывать тем или иным способом:
Как таковой, у нас есть довольно упорядоченный процесс управления файлами 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>