公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# WebService 3 種身份驗證方式總結和對比


2025年3月15日 9:16 本文熱度 427

前言

嘿,大家好!

你使用過 WebService 嗎?

WebService 就像是一座連接不同系統的小橋,通過 SOAP 或 REST 技術讓數據在這座橋上自由穿梭。無論是分享天氣預報,還是交換訂單信息,WebService 都是實現這些數據交互的幕后英雄。

就像任何橋梁都需要護欄來保證行人安全一樣,WebService 也需要一些保護措施來確保數據的安全傳輸。

而身份驗證就是這座橋上的“護欄”,它能防止未經授權的訪問,確保只有合法用戶才能通過。

無論是簡單的用戶名密碼驗證,還是更復雜的 JWT 驗證,C# 都提供了靈活的方式來實現。

接下來,我們就來看看如何在 C# 中實現它們。

準備好了嗎?

1. SOAP 協議自定義驗證

SOAP 協議允許在消息頭部(Header)中添加自定義信息,所以我們可以利用這一點來實現身份驗證。

實現步驟:

  1. 在客戶端,將用戶名和密碼添加到 SOAP 頭部

    var client = new MyWebService();
    client.Headers.Add("Username""admin");
    client.Headers.Add("Password""password");

    string result = client.SecureMethod();
    Console.WriteLine(result); // 輸出:驗證成功!敏感數據:12345
  2. 在服務端,解析 SOAP 頭部并驗證憑據

    [WebService(Namespace = "http://tempuri.org/")]
    publicclassMyWebService : WebService
    {
        [WebMethod]
        public string SecureMethod()
        {
            // 獲取 SOAP 頭部
            var headers = Context.Request.Headers;

            // 檢查頭部是否包含憑據
            if (headers["Username"] == "admin" && headers["Password"] == "password")
            {
                return"驗證成功!敏感數據:12345";
            }
            else
            {
                thrownew SoapException("身份驗證失敗", SoapException.ClientFaultCode);
            }
        }
    }

優點:

  • 簡單,容易實現
  • 適用于 SOAP 協議

缺點:

  • 安全性較低,憑據以明文傳輸,容易泄露
  • 需要手動處理頭部信息

2. HTTP Basic 認證

HTTP Basic 認證是一種簡單的身份驗證方式,客戶端將用戶名和密碼以 Base64 編碼的形式發送到服務端。

實現步驟:

  1. 客戶端將用戶名和密碼編碼后添加到 HTTP 請求頭

    var client = new HttpClient();
    var credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes("admin:password"));
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);

    var response = await client.GetAsync("http://localhost:50448/MyWebService.asmx/SecureMethod");
    var result = await response.Content.ReadAsStringAsync();
    Console.WriteLine(result); // 輸出:驗證成功!這是敏感數據ABCDE
  2. 服務端解碼并驗證憑據

    [WebService(Namespace = "http://tempuri.org/")]
    publicclassMyWebService : WebService
    {
        [WebMethod]
        public string SecureMethod()
        {
            var authHeader = Context.Request.Headers["Authorization"];

            if (authHeader != null && authHeader.StartsWith("Basic"))
            {
                var encodedCredentials = authHeader.Substring("Basic ".Length).Trim();
                var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(encodedCredentials));
                var parts = credentials.Split(':');
                var username = parts[0];
                var password = parts[1];

                if (username == "admin" && password == "password")
                {
                    return"驗證成功!這是敏感數據ABCDE";
                }
            }

            Context.Response.StatusCode = 401// 未授權
            Context.Response.AddHeader("WWW-Authenticate""Basic realm=\"MyWebService\"");
            return"身份驗證失敗";
        }
    }

優點:

  • 與第一種方法一樣,實現起來也比較簡單
  • 適用于 RESTful 服務。

缺點:

  • 安全性比第一種方法相比較好,但實際上 Base64 編碼容易被解碼,所以安全性也是比較低,最好使用 HTTPS 來保護傳輸安全

集成 JWT

C# WebService 沒有內置 JWT 支持,但對于更復雜的場景,可以通過集成第三方包來使用 JWT 實現身份驗證

實現步驟:

  1. 客戶端通過登錄接口獲取 JWT 令牌。

    代碼略,可參考以前文章《ASP.NET Core 標識(Identity)框架系列(二):使用標識(Identity)框架生成 JWT Token》的實現方法

  2. 客戶端將 JWT 令牌添加到請求頭

    var client = new HttpClient();
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer""your_jwt_token");

    var response = await client.GetAsync("http://yourserver/MyWebService.asmx/SecureMethod");
    var result = await response.Content.ReadAsStringAsync();
    Console.WriteLine(result); // 輸出:驗證成功!敏感數據:12345
  3. 服務端驗證 JWT 令牌的有效性

    [WebService(Namespace = "http://tempuri.org/")]
    publicclassMyWebService : WebService
    {
        [WebMethod]
        public string SecureMethod()
        {
            var authHeader = Context.Request.Headers["Authorization"];

            if (authHeader != null && authHeader.StartsWith("Bearer"))
            {
                var token = authHeader.Substring("Bearer ".Length).Trim();
                var handler = new JwtSecurityTokenHandler();
                var validationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key")),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };

                try
                {
                    var principal = handler.ValidateToken(token, validationParameters, out _);
                    return"驗證成功!敏感數據:12345";
                }
                catch
                {
                    thrownew SoapException("身份驗證失敗", SoapException.ClientFaultCode);
                }
            }

            thrownew SoapException("未提供令牌", SoapException.ClientFaultCode);
        }
    }

優點:

  • 安全性高,適合分布式系統
  • 支持令牌過期和刷新

缺點:

  • 相比前2種方法,實現復雜度較高
  • 需要第三方庫支持,如 System.IdentityModel.Tokens.Jwt

總結

本文我們一起探討了 C# WebService 實現身份驗證的3種方式:

  • 如果只是簡單的驗證,可以使用 SOAP 或 HTTP 基本認證
  • 如果需要更高的安全性,建議使用 JWT 或者其他方法

當然,無論哪種方式,建議最好都使用 HTTPS,保護傳輸的安全性。


該文章在 2025/3/17 9:13:36 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品亚洲欧美日韩综合 | 国产三级 | 国产午夜小视 | 国产av无码专区亚洲av果冻传媒 | 国产紧身裤三级在线视频 | 97人人超碰99 | 激情七月丁香婷婷一区二区 | 99国产小视 | 91亚洲欧美一区二区三区 | 91精品国产高清久 | 国产精品麻豆 | 成人午夜黄网站在 | 国产亚洲一区区二区在线 | 99久久国语露脸精品国产 | 精品无人区乱码一区二区三区手机 | 99精品国产麻豆婷婷 | 成在线观看网站免费观看 | 国内精品线在线观看 | 国产成人欧美日韩在线电影 | 精品日本三级乱伦 | 国产精品无码一区二区三区免 | 国产精品成人啪精久久 | 精品国产伦一区二区三区 | 国产美女视频免费观看的网站 | 国产尤物精品视频 | 国产精品成久久久久三级6二k | 国产丝袜视频 | 成人爽a毛片一区二区免费 成人爽a毛片在线视频 | 国产在线精品国偷产拍 | 成人一区二区三区视频在线观看 | 99精品久久久久中文字幕 | 爆乳一区二区无码 | 国产午夜精品一区二区三区不 | 国产区精品一区二区不卡中文 | 国产高清视频在线观看播放 | 精品国产av色一区 | 精品久久久久久免费影院8 精品久久久久久清纯 | 国产成人无码一区二区三区 | 国产一区二区三区四区五区 | 精品无码日韩国产不卡av | 国模私拍一区二区三区 |