测试的提供商是myopenid
代码很乱。发上来做个记录。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Text;
using System.IO;namespace MyOpenIdRP
{
public partial class Login : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{ WebRequest requ = WebRequest.Create("https://www.myopenid.com/server");
requ.Method = "POST";
requ.ContentType = "application/x-www-form-urlencoded";
StringBuilder builder = new StringBuilder();
//HtmlForm f = new HtmlForm();
//f.ID = "finalForm";
//f.Method = "POST";
//f.Action = "https://www.myopenid.com/server";
//f.EnableViewState = false;
// f.Controls.Add(ProvideHiddenInput("openid.mode","check_authenticate"));
Response.Write("==============================================Query String Start=======================<br/>");
foreach(string str in Request.QueryString.AllKeys)
{
Response.Write(string.Format("[{0}]: {1} <br/>",str,Request.QueryString[str]));
if (str == "openid.mode")
{
//f.Controls.Add(ProvideHiddenInput(str, "check_authentication"));
builder.AppendFormat("{0}={1}", str, "check_authentication");
builder.Append('&');
}
else
{
//f.Controls.Add(ProvideHiddenInput(str, Request.QueryString[str]));
builder.AppendFormat("{0}={1}", str, Request.QueryString[str]);
builder.Append('&');
}
}
Response.Write("==============================================Query String Ended=======================<br/>");
Response.Write("<br/><br/>");
Response.Write("==============================================Params Start=======================<br/>");
foreach (string str in Request.Params.AllKeys)
{
Response.Write(string.Format("[{0}]: {1} <br/>", str, Request.Params[str]));
} byte[] formData = Encoding.UTF8.GetBytes(builder.ToString());
requ.GetRequestStream().Write(formData,0,formData.Length);
WebResponse resp = requ.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream());
Response.Write("====================================authenticate result========================<br/>");
Response.Write(reader.ReadToEnd().Contains("is_valid:true"));
} private HtmlInputHidden ProvideHiddenInput(string idname,string value)
{
HtmlInputHidden hidden = new HtmlInputHidden();
hidden.ID = idname;
hidden.Attributes.Add("value", value);
return hidden;
}
}
}
代码很乱。发上来做个记录。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Text;
using System.IO;namespace MyOpenIdRP
{
public partial class Login : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{ WebRequest requ = WebRequest.Create("https://www.myopenid.com/server");
requ.Method = "POST";
requ.ContentType = "application/x-www-form-urlencoded";
StringBuilder builder = new StringBuilder();
//HtmlForm f = new HtmlForm();
//f.ID = "finalForm";
//f.Method = "POST";
//f.Action = "https://www.myopenid.com/server";
//f.EnableViewState = false;
// f.Controls.Add(ProvideHiddenInput("openid.mode","check_authenticate"));
Response.Write("==============================================Query String Start=======================<br/>");
foreach(string str in Request.QueryString.AllKeys)
{
Response.Write(string.Format("[{0}]: {1} <br/>",str,Request.QueryString[str]));
if (str == "openid.mode")
{
//f.Controls.Add(ProvideHiddenInput(str, "check_authentication"));
builder.AppendFormat("{0}={1}", str, "check_authentication");
builder.Append('&');
}
else
{
//f.Controls.Add(ProvideHiddenInput(str, Request.QueryString[str]));
builder.AppendFormat("{0}={1}", str, Request.QueryString[str]);
builder.Append('&');
}
}
Response.Write("==============================================Query String Ended=======================<br/>");
Response.Write("<br/><br/>");
Response.Write("==============================================Params Start=======================<br/>");
foreach (string str in Request.Params.AllKeys)
{
Response.Write(string.Format("[{0}]: {1} <br/>", str, Request.Params[str]));
} byte[] formData = Encoding.UTF8.GetBytes(builder.ToString());
requ.GetRequestStream().Write(formData,0,formData.Length);
WebResponse resp = requ.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream());
Response.Write("====================================authenticate result========================<br/>");
Response.Write(reader.ReadToEnd().Contains("is_valid:true"));
} private HtmlInputHidden ProvideHiddenInput(string idname,string value)
{
HtmlInputHidden hidden = new HtmlInputHidden();
hidden.ID = idname;
hidden.Attributes.Add("value", value);
return hidden;
}
}
}
解决方案 »
- 关于asp.net三层开发过程中的一些问题。。。。。。。。。。。。。
- 如何让TreeView所有节点不可点击(C# Web)
- 请教大家两段有趣的javascript代码
- DataGrid 选定行怎么变色?
- 找不到檔案或組件名稱 'ADODB' 或其相依性的其中之一。
- 高分请教ultrawebgrid脚本出错问题!
- 200分请问 Reporting Service 权限问题!
- 请教一个.net中对.txt文件操作的问题,请高手帮忙看一下!!
- SOS!!!如何在DataGrid中更新数据?
- calendar日历控件被dropdownlist遮住的问题
- repeater分页显示方法问题
- jquery新手,求指导。。
安全的。因为最后的验证结果并不是传送的,而是服务器展示,无法篡改,并且一次请求两次握手一次验证。OpenID……好吧,你百度都能找到的东西。