问题描述
我正在尝试在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;
}
-
可以这样做吗?
-
也如何从请求中检索用户名和密码?我的客户如下创建请求
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 (将#修改为@)