首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET WCF 與 WebSphere 7.0 Web Services 安全互操作實作

     編輯:關於.NET

前言

Web Services 以標準技術實現跨平台、跨語言互操作,成為 SOA 首選。隨著應用普及,安全與互操作性愈發關鍵。WS-I 組織制定 Basic Security Profile 規範互操作基準。WebSphere Application Server (WAS) V7.0 完整支援 WS-I Basic Security Profile 1.0,大部分支援 1.1,是標準支援最全面的應用伺服器之一。

本文以 WAS 內建 JAX-WS 範例為基礎,示範如何配置 WS-SecureConversation 安全策略集,實現 WAS V7.0 與 Microsoft WCF 3.0 間的安全會話互操作。

憑證準備與匯入

WCF 端 (Windows 憑證存儲)

  1. 開啟 mmc.exe → 新增「憑證」嵌入式管理單元 → 「我的用戶帳戶」。
  2. 個人 → 憑證 → 右鍵所有工作 → 匯入 → alice-key.p12,密碼 sampleapp。
  3. 受信任的人 → 憑證 → 匯入 bob-cert.der。
  4. 受信任的根憑證授權單位 → 憑證 → 匯入 myca.cer。

若測試 JAX-WS Client 呼叫 WCF Service,另需在「電腦帳戶」存儲區匯入 bob-key.p12 (個人)、alice-cert.der (受信任的人)、myca.cer (受信任根 CA)。

JAX-WS 端 (WAS keystore)

本文提供現成 JKS 檔:receiver.jks (服務端,含 bob 私鑰)、sender.jks (客戶端,含 alice 私鑰)。放置於 WAS 伺服器目錄解壓即用。

JKS 檔案

WAS 信任服務配置 (STS)

管理主控台服務選單

  1. 服務 → 策略集 → 系統策略集 → 複製 TrustServiceSecurityDefault 命名為 STSInterop,勾選「取代原策略集」。
  2. 服務 → 信任服務 → 信任服務連接 → 勾選「發布權杖」「更新權杖」→ 新建綁定 STSBinding → 加入 WS-Addressing、WS-Security。
  3. 配置 WS-Security → 認證與保護:
    • AsymmetricBindingInitiatorSignatureToken0:JAAS login = wss.consume.x509;回呼處理程式 → 信任錨庫 → 新建 STSTrustAnchor,外部 keystore 指向 receiver.jks,類型 JKS,密碼 sampleapp。
    • 請求簽名部件 request:app_signparts → 命名 req-sign-msg-part → 加入轉換演算法 https://www.w3.org/2001/10/xml-exc-c14n# → 加入簽名金鑰資訊 req-sign-keyinfo。
    • AsymmetricBindingRecipientEncryptionToken0:JAAS login = wss.consume.x509;回呼處理程式 → 自訂 keystore 同指向 receiver.jks,金鑰名稱 cn=bob,ou=myou,o=myco,別名 bob (用於解密 alice 加密訊息)。
    • 請求加密部件 request:app_encparts → 命名 req-enc-msg-part → 加入金鑰資訊 req-enc-keyinfo。
    • 同樣配置回應訊息簽名/加密資源 (過程類似,略)。

WS-Security 綁定配置

簽名權杖配置

回呼處理程式

信任錨庫配置

訊息配置欄目

已簽名訊息處理

編輯簽名部件

轉換演算法

簽名金鑰資訊

配置完成狀態

JAX-WS 應用部署與配置

  1. 安裝 <WAS_HOME>/samples/lib/JaxWSServiceSamples/JaxWSServicesSamples.ear,勾選「部署 web service」。
  2. 服務 → 服務提供者 → 選 EchoService → 連接策略集:複製 SecureConversation 命名 SCSvcInterop → 指定綁定 SCSvcBinding (加入 WS-Addressing、WS-Security) → 配置 WS-Security 資源 (參考 bindings.xml,過程同 STS)。
  3. 重啟 WAS 伺服器生效。

服務提供者列表

策略集與綁定設定

WCF 客戶端配置 (svcconfigeditor)

開啟 WSWindowsClient.exe.config,主要設定:

  1. 綁定 EchoSOAP(customBinding) → Message Version = Soap11WSAddressing10。
  2. 加入 Binding Element Extension → security。
  3. Security 屬性:
    AuthenticationMode: SecureConversation
    Default Algorithm: Basic128Rsa15
    MessageSecurityVersion: WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
    Require Signature Confirmation: True
    SecurityHeaderLayout: Lax
    
  4. SecureConversationBootstrap:
    AllowSerializedSigningTokenOnReply: True
    AuthenticationMode: MutualCertificate
    Default Algorithm: Basic128Rsa15
    MessageSecurityVersion: WSSecurity10WSTrustFebruaryWSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10
    RequireSignatureConfirmation: False
    
  5. 端點行為 Client-Cert-Behavior → clientCredentials:
    • clientCertificate: FindValue=12, X509FindType=FindBySerialNumber
    • serviceCertificate.defaultCertificate: FindValue=13, StoreName=TrustedPeople, X509FindType=FindBySerialNumber
    • serviceCertificate.authentication: CertificateValidationMode=PeerTrust
  6. 端點 EchoServicePort:Address 指向 WAS EchoService,BehaviorConfiguration=Client-Cert-Behavior,Identity DNS=Bob。

svcconfigeditor 介面

測試驗證

命令列執行 WSWindowClient.exe -e,WCF 客戶端發送 "HELLO" 至 JAX-WS Service:

測試成功

WAS SystemOut.log 顯示收到訊息並回覆 "JAX-WS==>>HELLO"。若已配置反向情境 (WCF Service + JAX-WS Client) 同樣可驗證。

結語

WAS 與 WCF 互操作關鍵在於:理解訊息交換模式 (MEPs)、正確配置策略集與綁定。本文逐步示範 WS-SecureConversation 跨平台安全會話實作,供開發者參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved