Abbiamo un'installazione di ADFS 2.0 che funziona bene per le nostre app MVC nei nostri vari ambienti. Credo che usi "autenticazione passiva" (mi sto ancora abituando alla terminologia corretta) - sicuramente è dove reindirizza l'utente al nostro proxy adfs se l'utente non è loggato e adfs reindirizza l'utente alla nostra app MVC dopo aver effettuato l'accesso.Come si modifica il file FederationMetadata.xml del WCF per varie distribuzioni?
Ora stiamo iniziando a esporre alcuni servizi Web protetti e vogliamo sfruttare questo stesso sistema di autenticazione. La mia comprensione è che voglio usare ws2007FederationHttpBinding
come vincolante per farlo. Credo di avere il mio web.config di WCF tutto configurato per questo, ma la mia lotta ora è centrata sul file FederationMetadata.xml
.
Guardando questo file, vedo alcune cose che ovviamente devono essere modificate, come ad esempio entityID="http://localhost/UserServices"
e il certificato. Poi ci sono alcune cose che non ho idea di cosa siano e se hanno bisogno di cambiare o meno, come ad esempio EntityDescriptor ID="_2b510fe8-98b8......
e <ds:SignatureValue>CZe5mEu19/bDNoZrY8f6C559CJ.......
.
Dove posso ottenere una migliore comprensione su come dovrei gestire questo file per i miei vari ambienti? Ho i seguenti ambienti di hosting questi servizi che saremo la distribuzione di un modo o nell'altro:
- workstation degli sviluppatori individuali (3x per ora, più tardi)
- Un ambiente Dev condiviso per chi scrive applicazioni contro questi servizi, ma non necessariamente la modifica dei servizi
- QA
- Staging
- di produzione (3 ambienti differenti con differenti certs/domini/etc.)
Come tale, abbiamo un processo abbastanza snello in atto che gestisce i nostri file web.config nei diversi ambienti usando le trasformazioni e trovando/sostituendo determinati token, quindi mi piacerebbe fare la stessa cosa con questo file xml. Quindi alla fine, tutto quello che sto cercando è una certa comprensione delle modifiche necessarie quando si gestisce questo file FederationMetadata.xml
per i vari ambienti.
Il mio file FederationMetadata.base.xml corrente è inferiore e credo che questo è di destra (ho solo bisogno di nomi/ruoli) e ho solo bisogno di sostituire in modo intelligente i vari gettoni, come ad esempio ~RootServiceUrlTokenToReplace~
, qui:
<?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>
Sì, so che questo non ha nulla a che fare con i WSDL. Tuttavia, questo ha molto a che fare con l'ambiente. FederationMetadata.xml originariamente renderizzato aveva "http: // localhost /" in esso più volte che è chiaramente errato e deve essere modificato per ogni diversa posizione di distribuzione. Non so a cosa modificare alcuni di questi, come l'ID EntityDescriptor o il SignatureValue. Questo è quello di cui ho bisogno per capire. – Jaxidian
Sembra che vogliate proteggere i servizi Web WCF usando WIF e ADFS. Il mio punto è semplicemente che non è necessario 'FederationMetadata.xml' per quello: quel file non è usato in nessuna comunicazione di servizi web. Si potrebbe anche rimuovere questo file dall'applicazione, e tutto funziona ancora. –
Fare questo significa che dovrò configurare manualmente tutto con ADFS 2.0 invece di configurare XML, correggere? E funzionerà ancora bene come un RP? Se è così, beh, questo in realtà proietta lo stesso problema altrove. Quindi ora, immagino, ho bisogno di sapere esattamente come configurare l'RP manualmente all'interno dello strumento di gestione di ADFS. – Jaxidian