webservices安全部署

2021-06-21 15:16:54 字數 1667 閱讀 4877

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

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

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

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

展開 c#

複製**

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

test.asmx**片段:

c#複製**

public credentialsoapheader myheader=new credentialsoapheader();   

// web 服務示例 

[soapheader("myheader")]    

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

public

string helloworld (string contents)    

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

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

c#複製**

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進行使用。

解決方案二:通過整合windows身份驗證。

1. 將web服務程式設為整合windows身份驗證。

2.客戶端web引用**

test.webreference.service1 wr = new test.webreference.service1(); //生成web service例項

wr.credentials = new networkcredential("guest","123"); //guest是使用者名稱,該使用者需要有一定的許可權

lbltest.text = wr.add(2,2).tostring(); //呼叫web service方法

該方案的優點是比較安全,效能較好,缺點是不便於移植,部署工作量大。

安全部署與優化

安全部署與優化 safe mode 簡單例子 設定指令碼訪問目錄 open basedir d www 設定禁用函式 disable functions system shell exec exec popen phpinfo passthru 設定register globals 設定magic ...

sshd服務安全部署

systemd 系統初始化程序 pstree 顯示系統樹程序 1,程序控制命令 ssh sshd systemctl status sshd 檢視服務狀態,inactive 不可用 active 可用 systemctl start sshd 開啟服務 systemctl stop sshd 關閉服...

DNS安全部署解析

status clienttransferprohibited 使用者限制轉移 由使用者自行設定的限制轉移,使用者可自行取消,網域名稱處於此狀態時不可以轉移 可以正常使用 正常管理 正常續費,此狀態也可以由註冊商取消。clienttransferprohibited解釋為 使用者限制轉移 由使用者自...