运营合同中的WCF身份验证

问题描述

我正在尝试在WCF项目中实现身份验证。该项目是自托管的,并使用自定义绑定。由于我在尝试实现UserNameOverTransport身份验证时遇到问题,因此我正在考虑在服务合同内部实现身份验证(通常将是一项操作)

public  Message GetData(Message input)
      {
        //authenticate
         if (Request.userName == "test" && Request.password == "test123")
         {
             return;
         }
         Message response=null;
         try
         {
             string str = "<note><to>Result </to></note>";
            XmlDocument xmlResponse = new XmlDocument();
            xmlResponse.LoadXml(str);
            //return @"Is Authenticated in "+ ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated.ToString();
             response = Message.CreateMessage(MessageVersion.None,String.Empty,new System.Xml.XmlNodeReader(xmlResponse));
          
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
        return response;
    }
  1. 可以这样做吗?

  2. 也如何从请求中检索用户名和密码?我的客户如下创建请求

    private string PostRequestToURL(string strUrl,string strData)
       {
           try
          {
              strData = "<note><to>Tove </to></note>";
              WebRequest request;
              request = WebRequest.Create(strUrl);               
             request.Credentials = new System.Net.NetworkCredential("username","password");
             request.Method = "Post";
             request.ContentType = "text/xml";
    
             // get default Web proxy
             IWebProxy myProxy = WebRequest.DefaultWebProxy;
             myProxy.Credentials = CredentialCache.DefaultCredentials;
             request.Proxy = myProxy;               
             // Encode the XML string
             System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
             byte[] byteStrData;
             byteStrData = encoding.GetBytes(strData);
    
             //// Write the encoded data to the request stream
             request.ContentLength = byteStrData.Length;
             Stream reqStream = request.GetRequestStream();
             reqStream.Write(byteStrData,byteStrData.Length);
             reqStream.Close();
    
             // get the response from server
             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
             Stream respStream = response.GetResponseStream();
             StreamReader strmReader = new StreamReader(respStream);
    
             string strResponse = strmReader.ReadToEnd();
             return strResponse;
         }
         catch (Exception ex)
         {
             return ex.Message.ToString();
             //Logger.LogEvent(ex,Logger.evtTypes.evtInfo,Logger.evtLevels.evtMin,LOGTYPE);
         }
         return "";
     } 
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)