SoapHeader実践のクライアント検証
4742 ワード
原文:劉武|SoapHeader実践のクライアント検証
Webserviceを作成する際には、ユーザーのアイデンティティを認証する必要があります.ユーザーにトークンを与え、メソッド署名ごとにトークンをパラメータとして追加して、ユーザーの正当性を検証することができます.しかし、この楊はすべての方法の署名を修正しなければならない.明らかに維持しにくい.したがって、メソッド署名の変更を最小限に抑え、SoapHeaderを使用すると、SoapHeaderクラスにトークンを保存することで、クライアントとサービス側での転送を実現できます.具体的な操作手順は次のとおりです.
カスタムSoapHeaderクラス
C#-Code:
注意SoapHeaderクラスを継承する必要があります
Webserviceを作成する際には、ユーザーのアイデンティティを認証する必要があります.ユーザーにトークンを与え、メソッド署名ごとにトークンをパラメータとして追加して、ユーザーの正当性を検証することができます.しかし、この楊はすべての方法の署名を修正しなければならない.明らかに維持しにくい.したがって、メソッド署名の変更を最小限に抑え、SoapHeaderを使用すると、SoapHeaderクラスにトークンを保存することで、クライアントとサービス側での転送を実現できます.具体的な操作手順は次のとおりです.
カスタムSoapHeaderクラス
C#-Code:
public class MyHeader :SoapHeader
{
public MyHeader() { }
private string _token = "";
public string Token
{
get { return _token; }
set { _token = value; }
}
}
注意SoapHeaderクラスを継承する必要があります
2作成Webservice
[WebService(Namespace = "http://www.liuwu.net/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
public MyHeader header;
[WebMethod]
[SoapHeader("header")]
public bool IsRightUser()
{
return CheckToken();
}
/// <summary>
///
/// </summary>
/// <remarks>
/// ,
///</remarks>
/// <returns></returns>
private bool CheckToken()
{
if (header != null && header.Token == "123")
{
return true;
}
return false;
}
}
3クライアント呼び出し
winformアプリケーションを新規作成し、Webリファレンスを追加します.リファレンス名はSoapHeaderTestで、具体的な呼び出し方法は以下の通りです
SoapHeaderTest.MyHeader header = new SoapHeaderTest.MyHeader();
header.Token = "123";
SoapHeaderTest.WebService ws = new SoapHeaderTest.WebService();
ws.MyHeaderValue = header;
bool b = ws.IsRightUser();