我們有一個ADFS 2.0安裝,在我們的各種環境中適用於我們的MVC應用程序。我相信它使用「被動認證」(我仍然習慣於正確的術語) - 如果用戶沒有登錄,並且adfs將用戶重定向到我們的MVC應用程序,它肯定是將用戶重定向到我們的adfs代理的位置一旦他們登錄了。如何爲各種部署更改我的WCF的FederationMetadata.xml文件?
我們現在開始公開一些安全的Web服務,並希望利用這個相同的身份驗證系統。我的理解是,我想使用ws2007FederationHttpBinding
作爲我的綁定來做到這一點。我相信我有我的WCF的web.config所有設置爲此,但我的奮鬥現在集中在FederationMetadata.xml
文件。
看着這個文件,我看到一些顯然需要改變的東西,比如entityID="http://localhost/UserServices"
和證書。然後有些東西我不知道它們是什麼以及是否需要更改,例如EntityDescriptor ID="_2b510fe8-98b8......
和<ds:SignatureValue>CZe5mEu19/bDNoZrY8f6C559CJ.......
。
從哪裏可以更好地瞭解我應該如何管理我的各種環境下的文件?我有承載這些服務,我們將部署到這種或那種方式以下環境:
- 個人開發者的工作站(3倍於現在,更晚)
- 共享開發環境,爲人們編寫這些應用程式服務,但並不一定修改服務
- QA
- 分段
- 生產(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>
是的,我知道這與WSDL無關。但是,這與環境有很大關係。原始呈現的FederationMetadata.xml在其中多次包含「http:// localhost /」,這顯然是錯誤的,需要針對每個不同的部署位置進行更改。我不知道如何改變其中的一些內容,例如EntityDescriptor ID或SignatureValue。這是我需要幫助理解的。 – Jaxidian
您似乎想要使用WIF和AD FS來保護WCF Web服務。我的觀點很簡單,就是你不需要'FederationMetadata.xml':該文件不用於任何Web服務通信。你也可以從你的應用程序中刪除這個文件,並且一切仍然有效。 –
這樣做意味着我必須使用ADFS 2.0手動配置所有內容,而不是使用XML進行配置,對嗎?作爲RP它仍然可以正常工作嗎?如果是這樣的話,那麼其實在其他地方只能提出同樣的問題。所以現在我想,我需要知道如何在ADFS管理工具中手動配置RP。 – Jaxidian