簡單Web service 身份驗證解決方案

2021-04-13 22:25:00 字數 1687 閱讀 9012

簡單web service 身份驗證解決方案

問題提出:為了構建乙個安全的web服務,需要對呼叫方進行身份驗證,只讓通過審核的使用者呼叫web服務。

軟體件環境:web服務程式部署在分布於各地的工廠伺服器,這些伺服器位於內網之中,沒有固定外網ip,且不能通過外網進行訪問。呼叫這些web服務的是一台連線至internet的web伺服器,該web伺服器通過vpn與各個工廠的伺服器相連。

解決方案一:通過soap header傳遞使用者名稱和密碼。

1. 首先需要在服務中定義乙個從 soapheader 派生的類,表示傳入 soap 標頭的資料。

public class credentialsoapheader : system.web.services.protocols.soapheader

set

} public string password

set

} public void initial(string nuserid,string npassword)

public bool isvalid(string nuserid,string npassword,out string nmsg)

else }

catch }

///

/// 使用者名稱密碼是否正確

///

/// 使用者名稱密碼是否正確

public bool isvalid(out string nmsg) }

2. 在web services使用 soapheader 自定義屬性定義一組關聯的標頭,服務中的每個 webmethod 都可以使用.(預設情況下,標頭是必需的,但也可以定義可選標頭)

test.a**x**片段:

public credentialsoapheader myheader=new credentialsoapheader();

// web 服務示例

[soapheader("myheader")]

[webmethod(description="加入了身份驗證的web服務",enablesession=true)]

public string helloworld (string contents)

3. 最後客戶端在呼叫要求標頭的方法之前,需直接在**類上設定標頭。

以下是winform客戶段**片段:

soaptest.test test1 = new soapheader.soaptest.test();

//建立soap頭物件

soaptest.credentialsoapheader header = new soapheader.soaptest.credentialsoapheader();

/設定soap頭變數

header.password = "admin";

header.userid = "admin1";

test1.credentialsoapheadervalue = header;

//呼叫web 方法

this.label1.text = test1.helloworld ("wang");

通過以上步驟就可以完成web services自定義身份驗證了.

該方案的優點是**靈活,便於移植,缺點是傳遞的資訊沒有加密,可配合ssl進行使用。

WebService身份驗證

web service身份驗證解決方案一 通過通過soap header身份驗證。1.我們實現乙個用於身份驗證的類,檔名mysoapheader.cs mysoapheader類繼承自system.web.services.protocols.soapheader。且定義了兩個成員變數,userna...

SpringBoot 使用jwt進行身份驗證

這裡只供參考,比較使用jwt方式進行身份驗證感覺不好,最不行的就是不能退出 登陸時設定多長過期時間,只能等這個時間過了以後才算退出,服務端只能驗證請求過來的token是否通過驗證 code created by qhong on 2018 6 7 15 34 標註該註解的,就不需要登入 target...

webservice簡單學習

一 web service 的概念想要理解 web service 必須先理解什麼是 service 服務 傳統上,我們把計算機後台程式 daemon 提供的功能,稱為 服務 service 比如,讓乙個防毒軟體在後台執行,它會自動監控系統,那麼這種自動監控就是乙個 服務 通俗地說,服務 就是計算機...