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

WSE 3.0 構建 Web 服務安全(三):策略配置、證書、簽名與實例開發

     編輯:關於.NET

前言

接續前兩篇,本文詳細講解 WSE 3.0 策略配置工具實現 Web 服務安全,含工具介紹、配置流程、代碼實現與總結。

一、WSE 3.0 策略工具介紹

專案右鍵 → WSE 3.0 Settings,7 個分頁:

  1. General:啟用 WSE 3.0、SOAP 訊息工廠
  2. Security:用戶令牌管理類庫、證書/訊息有效時間
  3. Routing:SOAP 中介者加密
  4. Policy:核心——服務端/客戶端安全策略配置
  5. Token Issuance:令牌 TTL、安全上下文令牌
  6. Diagnostics:訊息追蹤輸入/輸出文件、詳細錯誤
  7. Messaging:MTOM 配置
WSE 3.0 配置工具介面

二、策略配置實戰流程

1. 啟用 WSE 3.0

啟用 WSE 3.0

自動更新 Web.config:

<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3..."/>
<webServices>
  <soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3..."/>
</webServices>

2. 安全分頁:自定義 UsernameTokenManager

安全分頁配置

生成:

<security>
  <securityTokenManager>
    <add type="MyUsernameTokenManager.MyUsernameTokenManager, UsernameTokenManagerClassLib" namespace="..." localName="UsernameToken"/>
  </securityTokenManager>
</security>

3. 策略分頁:核心配置向導

策略向導

客戶端認證四種模式:

  • Anonymous:匿名,依賴傳輸層 SSL
  • Username:用戶名/密碼 UsernameToken
  • Certificate:X.509 證書
  • Windows:Kerberos(非 WS-* 標準)

訊息保護等級:

  • None:僅傳輸層 SSL
  • Sign-Only:簽名保證唯一性
  • Sign and Encrypt:簽名 + 體加密
  • Sign, Encrypt, Encrypt Signature:簽名 + 體加密 + 簽名加密

4. 匿名策略生成示例

<policy name="ServerPolicy">
  <usernameOverTransportSecurity />
  <requireActionHeader />
</policy>

安全級別較低,易被攔截破解。

5. 令牌/診斷/消息分頁配置

令牌 TTL 30 秒、診斷追蹤輸入輸出、MTOM 模式等,均自動生成對應配置節點。

三、代碼實現與分析

服務端:套用策略屬性

[Microsoft.Web.Services3.Policy("ServerPolicy")]
public class Service : WebService {
    [WebMethod]
    public string HelloWorld() => "Hello Guys, Frank Xu Lei.is testing WSE3.0 Setting Policy";
}

客戶端:設置憑證與策略

var proxy = new ServiceWse();
var token = new UsernameToken("FrankXu", "123456789", PasswordOption.SendPlainText);
proxy.SetClientCredential(token);
proxy.SetPolicy("ClientPolicy"); // 關鍵:套用客戶端策略
string result = proxy.HelloWorld();

流程:客戶端按策略封裝 UsernameToken → SOAP Header 發送 → 服務端按策略解析驗證。

運行成功截圖

代碼方式實現同等策略(進階)

var assertion = new UsernameForCertificateAssertion();
assertion.X509TokenProvider = new X509TokenProvider(StoreLocation.CurrentUser, StoreName.AddressBook, "CN=WSE2QuickStartServer", X509FindType.FindBySubjectDistinguishedName);
assertion.Protection.Request.SignatureOptions = SignatureOptions.IncludeAddressing | SignatureOptions.IncludeTimestamp | SignatureOptions.IncludeSoapBody;
assertion.Protection.Request.EncryptBody = true;

四、總結

策略工具讓聲明式安全配置極簡單;代碼方式支援更精細控制。調試錯誤集錦另見部落格系列。下節進入 MTOM 優化傳輸。本文附源碼。

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