如何在soap web服务中使用ws安全头c#

时间:2016-06-01 07:43:00

标签: c# web-services wcf soap wsse

我需要一些帮助。首先,我写了一个基本身份验证的肥皂网服务。但我必须在soap中使用wssecurity进行更改。如何使用ws安全标头我必须读取用户名和密码,我必须比较我的我的webconfig文件中的用户名和密码。我写这段代码,但我不确定:我这样做了。但我怎样才能在webconfig.file中配置

         public class QuantityService : Microsoft.Web.Services3.WebServicesClientProtocol, IQuantityService 
{


    private OperationResult AuthCheck()
    {
        OperationResult retVal = new OperationResult()
        {
            ReturnCode = 0,
            ReturnMessage = "OK"
        };

        string userName = ConfigurationManager.AppSettings["username"].ToString();
        string password = ConfigurationManager.AppSettings["password"].ToString();


        //UsernameToken token = new UsernameToken(userName,password,PasswordOption.SendPlainText);
        QuantityService serviceProxy = new QuantityService();
        SoapContext requestContext = serviceProxy.RequestSoapContext;

        //requestContext.Security.Tokens.Add(token);

        if (requestContext == null)
        {
            throw new ApplicationException("Non-SOAP request.");
        }

        foreach (SecurityToken tok in requestContext.Security.Tokens)
        {
            if (tok is UsernameToken)
            {
                if (userName == ((UsernameToken)tok).Username && password == ((UsernameToken)tok).Password)
                {
                    retVal.ReturnCode = 0;
                    retVal.ReturnMessage = "OK";
                }
                else
                {
                    retVal.ReturnCode = -2;
                    retVal.ReturnMessage = "Unauthorized.";
                }
            }
        }


        return retVal;
    }

0 个答案:

没有答案