共用方式為


Windows Communication Foundation 隱私權資訊

Microsoft致力於保護用戶隱私權。 當您使用 Windows Communication Foundation (WCF) 3.0 版建置應用程式時,您的應用程式可能會影響使用者的隱私權。 例如,您的應用程式可能會明確收集使用者連絡資訊,或透過因特網要求或傳送資訊給您的網站。 如果您在應用程式中內嵌Microsoft技術,這項技術可能會有自己的行為,可能會影響隱私權。 除非您或用戶選擇將任何資訊傳送給我們,否則 WCF 不會從您的應用程式傳送任何資訊給Microsoft。

WCF 簡介

WCF 是使用 Microsoft .NET Framework 的分散式傳訊架構,可讓開發人員建置分散式應用程式。 兩個應用程式之間通訊的訊息包含標頭和本文資訊。

標頭可能包含訊息路由、安全性資訊、交易等等,視應用程式所使用的服務而定。 訊息預設會加密。 其中一個例外狀況是在使用 BasicHttpBinding時,其設計目的是要與未受保護的舊版Web服務搭配使用。 身為應用程式設計師,您必須負責最終設計。 SOAP 主體中的訊息包含應用程式特定數據;不過,這項數據,例如應用程式定義的個人資訊,可以使用WCF加密或機密性功能來保護。 下列各節說明可能會影響隱私權的功能。

訊息傳送

每個 WCF 訊息都有一個位址標頭,指定訊息目的地,以及回復的目的地。

端點位址的位址元件是識別端點的統一資源標識碼(URI)。 位址可以是網路位址或邏輯位址。 位址可能包含計算機名稱(主機名、完整功能變數名稱)和IP位址。 端點位址也可能包含全域唯一標識碼(GUID),或用來辨別每個位址之暫存位址的 GUID 集合。 每個訊息都包含一個訊息識別碼,也就是一個全球唯一識別碼(GUID)。 此功能遵循 WS-Addressing 參考標準。

WCF 傳訊層不會將任何個人資訊寫入本機電腦。 不過,如果服務開發人員已建立公開這類資訊的服務,可能會傳播網路層級的個人資訊(例如,在端點名稱中使用人員的名稱,或在端點的Web服務描述語言中包含個人資訊,但不需要用戶端使用 HTTPs來存取 WSDL)。 此外,如果開發人員針對公開個人資訊的端點執行 ServiceModel 元數據公用程式工具(Svcutil.exe), 則工具的輸出可能包含該資訊,並將輸出檔案寫入本機硬碟。

主機托管

WCF 中的裝載功能可讓應用程式視需要啟動,或啟用多個應用程式之間的埠共用。 WCF 應用程式可以像 ASP.NET 一樣裝載在 Internet Information Services (IIS) 中。

主機代管不會公開任何相關的網路資訊,也不會在機器上存留數據。

訊息安全性

WCF 安全性提供傳訊應用程式的安全性功能。 所提供的安全性功能包括驗證和授權。

驗證是透過在用戶端和服務之間傳遞認證來執行。 驗證可以透過傳輸層級安全性或SOAP訊息層級安全性,如下所示:

  • 在SOAP訊息安全性中,驗證會透過使用者名稱/密碼、X.509 憑證、Kerberos 票證和SAML令牌等認證來執行,這些認證全都可能包含個人資訊,視簽發者而定。

  • 使用傳輸層安全性時,驗證是透過 HTTP 驗證機制(基本、摘要、協商、整合式 Windows 授權、NTLM、None 和匿名)以及表單驗證等傳統傳輸驗證機制來完成。

驗證可以導致在通訊端點之間建立一個安全的會話。 會話是由 GUID 所識別,該 GUID 會持續安全性會話的存留期。 下表顯示哪些內容被保留,以及它們的位置。

資料 存儲
簡報認證,例如用戶名稱、X.509 憑證、Kerberos 令牌,以及認證參考。 標準 Windows 認證管理機制,例如 Windows 證書存儲。
使用者成員資格資訊,例如使用者名稱和密碼。 ASP.NET 成員資格提供者。
用來向客戶端驗證服務之服務的身分識別資訊。 服務的端點位址。
呼叫端資訊。 稽核記錄。

審計

稽核會記錄驗證和授權事件的成功和失敗。 稽核記錄包含下列數據:服務 URI、動作 URI 和呼叫端的識別。

稽核也會記錄系統管理員修改訊息記錄的設定時(開啟或關閉),因為訊息記錄可能會記錄標頭和主體中的應用程式特定數據。 針對 Windows XP,記錄會記錄在應用程式事件記錄檔中。 針對 Windows Vista 和 Windows Server 2003,記錄會記錄在安全性事件記錄檔中。

交易

交易功能會將交易服務提供給WCF應用程式。

交易傳播中使用的交易標頭可能包含交易標識碼或登記標識碼,也就是 GUID。

交易功能會使用 Microsoft 分散式交易協調器 (MSDTC) 交易管理員 (Windows 元件) 來管理交易狀態。 根據預設,交易管理員之間的通訊會加密。 交易管理員可能會記錄端點參考、交易標識符和登記標識碼,作為其持久狀態的一部分。 此狀態的存留期取決於交易管理員記錄檔的存留期。 MSDTC 服務擁有並維護此記錄檔。

交易功能會實作 WS-Coordination 和 WS-Atomic 交易標準。

可靠的會話

WCF 中的可靠會話會在傳輸或中繼失敗時提供訊息的傳輸。 即使在基礎傳輸中斷連線(例如無線網路上的 TCP 連線)或遺失訊息(HTTP Proxy 卸除傳出或傳入訊息)時,系統仍能確保訊息的精確一次傳遞。 可靠的會話也會復原訊息重新排序(如在多重路徑路由的情況下可能發生),保留訊息的傳送順序。

可靠的會話是使用 WS-ReliableMessaging (WS-RM) 通訊協議來實作。 它們會新增包含會話資訊的 WS-RM 標頭,用來識別與特定可靠會話相關聯的所有訊息。 每個 WS-RM 會話都有一個識別符,稱為 GUID。

終端用戶的計算機上不會保留任何個人資訊。

已排隊的通道

佇列會代表接收應用程式儲存來自傳送應用程式的訊息,稍後再將這些訊息轉送至接收應用程式。 例如,當接收應用程式為短暫時,這些工具有助於確保將訊息從傳送應用程式傳遞到接收應用程式。 WCF 提供支援以 Microsoft 消息佇列 (MSMQ) 作為傳輸方法進行佇列作業。

佇列通道功能不會將標頭新增至訊息。 相反地,它會建立消息佇列訊息,並設定適當的消息佇列訊息屬性,並叫用消息佇列方法來將訊息放入消息佇列中。 消息佇列是隨附於 Windows 的選擇性元件。

佇列通道功能不會在終端用戶的計算機上保留任何資訊,因為它使用消息佇列作為佇列基礎結構。

COM+ 整合

這項功能會包裝現有的 COM 和 COM+ 功能,以建立與 WCF 服務相容的服務。 此功能不會使用特定標頭,也不會保留使用者計算機上的數據。

COM 服務識別符

這為標準 WCF 用戶端提供非受控的封裝。 此功能在傳輸過程中沒有特定的標頭,也不會存儲在電腦上的數據。

對等通道

對等通道可讓您使用 WCF 開發多方應用程式。 多方傳訊會在網絡的背景中發生。 網格是由節點可以聯結的名稱來識別。 對等通道中的每個節點都會在使用者指定的埠上建立 TCP 接聽程式,並與網格中的其他節點建立連線,以確保復原能力。 若要連線到網格中的其他節點,節點也會交換一些數據,包括接聽程式位址和計算機的IP位址,以及網格中的其他節點。 在網格中傳送的訊息可以包含與寄件者相關的安全性資訊,以防止郵件詐騙和竄改。

用戶計算機上不會儲存任何個人資訊。

IT 專業經驗

追踪

WCF 基礎結構的診斷功能會記錄透過傳輸和服務模型層傳遞的訊息,以及與這些訊息相關聯的活動和事件。 此功能預設為關閉。 它使用應用程式的組態檔啟用,並且在運行期間可以使用 WCF WMI 提供者修改追蹤行為。 啟用後,追蹤基礎設施會向已配置的監聽器發出包含訊息、活動和處理事件的診斷追蹤。 輸出的格式和位置是由系統管理員的接聽程式組態選項所決定,但通常是 XML 格式化的檔案。 系統管理員負責在追蹤檔案上設定訪問控制清單 (ACL)。 特別是當由 Windows 啟用系統(WAS)進行裝載時,系統管理員應確保如果這不是預期的,就不會從公用虛擬根目錄提供檔案。

追蹤有兩種類型:訊息記錄和服務模型診斷追蹤,如下一節所述。 每個類型都是透過自己的追蹤來源來設定: MessageLoggingSystem.ServiceModel。 這兩個記錄追蹤來源能夠在應用程式中擷取本地的資料。

訊息記錄

訊息記錄追蹤來源 (MessageLogging) 可讓系統管理員記錄流經系統的訊息。 透過設定,使用者可能會決定只記錄整個訊息或訊息標頭、是否要記錄在傳輸和/或服務模型層,以及是否包含格式不正確的訊息。 此外,用戶可以設定篩選來限制記錄的訊息。

根據預設,訊息記錄會停用。 本機計算機管理員可以防止應用層級系統管理員開啟訊息記錄。

加密和解密的訊息記錄

訊息會記錄、加密或解密,如下列詞彙所述。

傳輸記錄記錄在傳輸層級接收和傳送的訊息。 這些訊息包含所有標頭,而且可能會在傳送到網路和接收時先加密。

如果在訊息傳送前進行加密,那麼在接收到訊息後,它們也會以加密形式記錄。 例外情況是使用安全性協議(HTTPS):它們會在發送之前和收到之後記錄解密,即使在傳輸中被加密也是如此。

服務日誌會記錄在服務模型層級上接收或傳送的訊息,這是在通道標頭處理完成之後,以及進入使用者代碼之前和之後。

在此層級記錄的訊息,即使在傳輸中已被保護並加密,也會被解密。

格式不正確的訊息紀錄會記錄 WCF 基礎結構無法理解或處理的訊息。

訊息會記錄 as-is,也就是加密或未加密

當訊息以解密或未加密的形式登入時,根據預設,WCF 會在記錄訊息之前,先從訊息中移除安全性密鑰和潛在的個人資訊。 下一節將說明移除哪些資訊,以及何時移除。 計算機管理員和應用程式部署者都必須採取特定設定動作,才能將預設行為變更為記錄密鑰和潛在的個人資訊。

記錄解密/未加密的訊息時,從訊息標頭移除的資訊

當訊息以解密或未加密的形式記錄時,安全性密鑰和潛在的個人資訊預設會從訊息標頭和訊息內容中移除。 下列清單顯示 WCF 會考慮金鑰和潛在的個人資訊。

已移除的鍵:

  • 針對 xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust"xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"

    wst:BinarySecret wst:Entropy

  • 針對 xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"xmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"

    wsse:Password wsse:Nonce

可能已移除的個人資訊:

  • 針對 xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.1.xsd"xmlns:wsse="http://docs.oasis-open.org/wss/2005/xx/oasis-2005xx-wss-wssecurity-secext-1.1.xsd"

    wsse:Username wsse:BinarySecurityToken

  • 針對 xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" 中的 bold,移除以下項目:

<Assertion MajorVersion=“1” MinorVersion=“1” AssertionId=“[ID]” Issuer=“[string]” IssueInstant=“[dateTime]”

<Conditions NotBefore=“[dateTime]” NotOnOrAfter=“[dateTime]”><AudienceRestrictionCondition><Audience>[uri]</Audience>+ </AudienceRestrictionCondition>* <DoNotCacheCondition >/* --抽象基底類型 <Condition /*<>

<條件>? <建議><AssertionIDReference>[ID]</AssertionIDReference>* <Assertion>[assertion]</Assertion>* <[any]* >/Advice? <--抽象基底類型 <語句 />* <主題語句><主體> <NameIdentifier NameQualifier="[string]"? Format="[uri]"? > [string] </NameIdentifier>? <SubjectConfirmation><ConfirmationMethod>[anyUri]</ConfirmationMethod>+ <SubjectConfirmationData>[any]</SubjectConfirmationData>? <ds:KeyInfo>...</ds:KeyInfo>? </主體確認>? </主題></主題陳述>*

<AuthenticationStatement AuthenticationMethod=“[uri]” AuthenticationInstant=“[dateTime]”

[主旨] <SubjectLocality IPAddress="[string]"? DNSAddress="[string]"? />? <AuthorityBinding AuthorityKind=“[QName]” Location=“[uri]” Binding=“[uri]” />* /AuthenticationStatement* <>AttributeStatement<> [Subject] <Attribute AttributeName=“[string]” AttributeNamespace=“[uri]”

<AttributeValue>[any]</AttributeValue>+ </Attribute>+ </AttributeStatement>* <AuthorizationDecisionStatement Resource=“[uri]” Decision=“[Permit|拒絕|不確定]”

[主旨] <Action Namespace=“[uri]”>[string]</Action>+ <Evidence><AssertionIDReference>[ID]</AssertionIDReference>+ <Assertion>[assertion]</Assertion>+ </Evidence>? </授權決策聲明>* </斷言>

記錄已解密或未加密的訊息時,從訊息內容移除的資訊

如先前所述,WCF 會從已記錄解密和未加密訊息的訊息標頭中移除密鑰和已知個人資訊。 此外,WCF 會針對下列清單中的本文元素和動作,從訊息主體中移除密鑰和已知可能的個人資訊,其描述密鑰交換所涉及的安全性訊息。

針對下列命名空間:

xmlns:wst="http://schemas.xmlsoap.org/ws/2004/04/trust"xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" (例如,如果沒有可用的動作 )

這些涉及密鑰交換的元素資訊已被移除:

wst:RequestSecurityToken

wst:RequestSecurityTokenResponse

wst:RequestSecurityTokenResponseCollection

下列動作都會移除資訊:

  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Renew
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Renew
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Cancel
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Cancel
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Validate
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Validate
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Amend
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Amend
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Renew
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Renew
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT/Cancel
  • http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/SCT/Cancel
  • http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT
  • http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT
  • http://schemas.xmlsoap.org/ws/2004/04/security/trust/RST/SCT-Amend
  • http://schemas.xmlsoap.org/ws/2004/04/security/trust/RSTR/SCT-Amend

不會從應用程式特定的標頭和本文數據中移除任何資訊

WCF 不會監控應用程式特定標頭中的個人資訊(例如查詢字串)或主體數據(例如信用卡號碼)。

當訊息記錄開啟時,應用程式特定標頭和本文資訊中的個人資訊可能會顯示在記錄檔中。 同樣地,應用程式部署者會負責在組態和記錄檔上設定 ACL。 如果不想顯示此資訊,也可以關閉記錄,或在記錄檔記錄之後從記錄檔中篩選掉此資訊。

服務模型追蹤

服務模型追蹤來源 (System.ServiceModel) 可讓您追蹤與訊息處理相關的活動和事件。 這項功能使用 來自 System.Diagnostics的 .NET Framework 診斷功能。 與MessageLogging屬性相似,位置及其 ACL 可由使用者透過 .NET Framework 應用程式組態檔進行設定。 如同訊息記錄,當系統管理員啟用追蹤時,一律會設定檔案位置;因此,系統管理員會控制 ACL。

當訊息在處理範圍內時,追蹤會包含訊息標題。 在上一節中,隱藏郵件標頭中可能存在個人資訊的規則同樣適用:先前識別出的個人資訊會預設從追蹤記錄中移除。 計算機管理員和應用程式部署者都必須修改設定,才能記錄潛在的個人資訊。 不過,應用程式特定標頭中包含的個人資訊會被記錄到記錄檔中。 應用程式部署者負責在組態和追蹤檔案上設定 ACL。 它們也可以關閉追蹤,以隱藏這項資訊,或在記錄後從追蹤檔案中篩選掉此資訊。

作為 ServiceModel 追蹤的一部分,唯一標識碼(稱為活動標識符,通常是 GUID)會將不同的活動連結在一起,因為訊息會流經基礎結構的不同部分。

自訂追蹤偵聽器

針對訊息記錄和追蹤,可以設定自定義追蹤接聽程式,以在線路上傳送追蹤和訊息(例如,傳送至遠端資料庫)。 應用程式部署者負責設定自定義接聽程式,或讓用戶能夠這麼做。 它們也會負責在遠端位置公開的任何個人資訊,以及適當地將 ACL 套用至此位置。

IT 專業人員的其他功能

WCF 具有 WMI 提供者,可透過 WMI 公開 WCF 基礎結構組態資訊(隨附於 Windows)。 根據預設,WMI 介面可供系統管理員使用。

WCF 組態使用 .NET Framework 組態機制。 組態檔會儲存在機器上。 應用程式開發人員和系統管理員會針對每個應用程式的需求建立組態檔和 ACL。 組態檔可以包含證書存儲中憑證的端點位址和連結。 憑證可用來提供應用程式數據,以設定應用程式所使用的各種功能屬性。

WCF 也會藉由呼叫 FailFast 方法,使用 .NET Framework 進程傾印功能。

IT 專業人員工具

WCF 也提供下列 IT 專業工具,隨附於 Windows SDK 中。

SvcTraceViewer.exe

查看器會顯示 WCF 追蹤檔案。 查看器會顯示追蹤中包含的任何資訊。

SvcConfigEditor.exe

編輯器可讓使用者建立和編輯 WCF 組態檔。 編輯器會顯示組態檔中包含的任何資訊。 您可以使用文字編輯器來完成相同的工作。

ServiceModel_Reg

此工具可讓使用者管理計算機上安裝的 ServiceModel。 此工具會在主控台視窗中執行時,在控制台視窗中顯示狀態消息,而進程中可能會顯示WCF 安裝設定的相關信息。

WSATConfig.exe 和 WSATUI.dll

這些工具可讓IT專業人員在WCF中設定可互通 WS-AtomicTransaction 網路支援。 工具會顯示並允許使用者變更儲存在登錄中之最常見 WS-AtomicTransaction 設定的值。

跨領域功能

下列功能是跨領域。 也就是說,它們可以與前面提到的任何特徵結合。

服務架構

標頭可以包含實例標識碼,這是將訊息與 CLR 類別實例產生關聯的 GUID。

Web 服務描述語言 (WSDL) 包含埠的定義。 每個埠都有端點位址和系結,代表應用程式所使用的服務。 您可以使用組態關閉公開 WSDL。 計算機上不會保留任何資訊。

另請參閱