SoapHeader実践のクライアント検証

4742 ワード

原文:劉武|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;
    }
}


MyHeaderクラスのインスタンスheaderを宣言し、IsRightUser関数にSoapHeaderプロパティを追加し、headerを使用して値を保存することを示します.


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();


wsのMyHeaderValueに

を割り当てる必要があることに注意